<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[לולאה שנתקעת ומדלגת פריטים]]></title><description><![CDATA[<p dir="auto">יש לי פונקצייה שאני מבצע עדכון הדפסה, אחרי שמדפיסים את כל הפריטים, אני עובר אחד אחד ומעדכן שהוא הודפס שלא יבוא בפעם הבאה להדפסה.<br />
לא מצליח להבין למה הוא מעדכן לי חלק ונתקע, יש איזה דרך טובה. אני חייב עזרה, בניתי את זה כבר בארבע דרכים וכולן לא מוצלחות...<br />
תודה רבהה. אני חייב בדחיפות לסדר את זה, יש לי יום התרמה במוצ"ש. ושוב תודה.</p>
<pre><code>export async function button108_click(event) {
// 	sac = כמות של כל הפריטים
if (sac&gt;0) {
		let skip3=0,
	ms3;
	let hh3 =Number((sac/50).toFixed());
	if (hh3&gt;0) {

		ms3=Number((sac/50).toFixed()) +1
		console.log((sac/50).toFixed());
let dd3=1
	for (var i = 0; i &lt; ms3; i++) {

let results = await wixData.query("card").isNotEmpty("torem").ne("print","הודפס").skip(skip3).limit(50).find()
    let items = results.items;
	console.log(items);
	  await items.map(obj =&gt; {
		  	   console.log(obj);
       wixData.get("card", obj._id).then((item)=&gt;{
item.print = "הודפס"
return wixData.update("card", item)
})
	  })
		  skip3 = skip3 +50
  console.log(skip3);
dd3=dd3+1

	}

	}
}


  Promise.all[(

await  anashim.map(item4 =&gt; {
     wixData.get('tormim', item4._id)
   .then((item6) =&gt; {
	   console.log(item6);
    item6.print = "הודפס"; 
  return  wixData.update("tormim", item6);

  } )
  .catch( (err) =&gt; {
    let errorMsg = err;
  } );
		})
 )]
 .then(()=&gt;{
  dard=undefined
anashim=[]
 })
}
</code></pre>
]]></description><link>https://tchumim.com/topic/10450/לולאה-שנתקעת-ומדלגת-פריטים</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 12:09:22 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/10450.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Jan 2021 09:44:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Mon, 04 Jan 2021 09:10:34 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a> אמר ב<a href="/post/116415">לולאה שנתקעת ומדלגת פריטים</a>:</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> לא עובד טוב<br />
מה יכול להיות???</p>
</blockquote>
<p dir="auto">לא תיארת מה לא עובד. נראה לי שבשלב הזה יהיה קשה לעזור מעל גבי דפי הפורום.</p>
]]></description><link>https://tchumim.com/post/116504</link><guid isPermaLink="true">https://tchumim.com/post/116504</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Mon, 04 Jan 2021 09:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Sat, 02 Jan 2021 23:07:03 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a> אתה צריך ללמוד javaScript כמו ילד טוב, אין מנוס.</p>
]]></description><link>https://tchumim.com/post/116416</link><guid isPermaLink="true">https://tchumim.com/post/116416</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Sat, 02 Jan 2021 23:07:03 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Sat, 02 Jan 2021 22:45:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> לא עובד טוב <img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title=":(" alt="😞" /><br />
מה יכול להיות???</p>
]]></description><link>https://tchumim.com/post/116415</link><guid isPermaLink="true">https://tchumim.com/post/116415</guid><dc:creator><![CDATA[אבי 203]]></dc:creator><pubDate>Sat, 02 Jan 2021 22:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 13:02:59 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a> אמר ב<a href="/post/116384">לולאה שנתקעת ומדלגת פריטים</a>:</p>
<blockquote>
<p dir="auto">למסד הנתונים קוראים tormim , card/</p>
</blockquote>
<p dir="auto">גם כאן אתה צודק, כתבתי anashim במקום tormim. תיקנתי.<br />
עכשיו מובן? ייתכן שיש עדיין טעויות...<br />
(קיצרתי בקוד, צריך להוסיף טיפול בשגיאות)</p>
]]></description><link>https://tchumim.com/post/116385</link><guid isPermaLink="true">https://tchumim.com/post/116385</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Fri, 01 Jan 2021 13:02:59 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 12:53:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> לא אתן לך על האחרונה לייק... <img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /><br />
אבל עדין חסר לי.<br />
אני מריץ את הלולאה על אובייקטים (anashim,dard) שנבנים בפונקצייה אחרת בפעולת ההורדה של הPDF.<br />
ואז הפונקצייה הזו אמורה לעדכן במסד הנתונים לא באובייקט, למסד הנתונים קוראים tormim , card/</p>
<p dir="auto">וממה שכתבת נראה שהעדכון הוא באובייקט לא במסד הנתונים. אני טועה?  או שמה שצבוע באדום זה ההדמייה שלך לשם מסד הנתונים<br />
updateItemPrinted('card', card)),</p>
]]></description><link>https://tchumim.com/post/116384</link><guid isPermaLink="true">https://tchumim.com/post/116384</guid><dc:creator><![CDATA[אבי 203]]></dc:creator><pubDate>Fri, 01 Jan 2021 12:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 12:46:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a> אופסס... טעות שלי ("כל המתיהר וכו' חכמתו מסתלקת"...). תיקנתי בקוד.</p>
]]></description><link>https://tchumim.com/post/116383</link><guid isPermaLink="true">https://tchumim.com/post/116383</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Fri, 01 Jan 2021 12:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 12:37:29 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> אמר ב<a href="/post/116377">לולאה שנתקעת ומדלגת פריטים</a>:</p>
<blockquote>
<p dir="auto">table</p>
</blockquote>
<p dir="auto">חלישות הדעת!</p>
<p dir="auto">רק להבין אבל מה זה table?<br />
שם של מסד הנתונים? איפה שלחת את זה?</p>
]]></description><link>https://tchumim.com/post/116382</link><guid isPermaLink="true">https://tchumim.com/post/116382</guid><dc:creator><![CDATA[אבי 203]]></dc:creator><pubDate>Fri, 01 Jan 2021 12:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 13:01:28 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a> הבנת טוב. הם אכן ממתינים אחד לשני.<br />
יש לי עדיין כמה וכמה הצעות שיפור לקוד שלך:</p>
<ul>
<li>לכאורה תוכל גם לעדכן את שתי הרשימות במקביל, אם אין תלויות בין אחד לשני.</li>
<li>כדאי להשתמש במשתנים עם שמות תיאוריים, משתמש שהוא מערך, תן לו שם בלשון רבים. משתנה שהוא אובייקט מסוג <code>card</code> תקרא לו <code>card</code> ולא רק <code>item</code> סתמי, וכו' על זה הדרך. כן, אם יש כמה משתנים מסוג <code>card</code> אל תקרא להם <code>card1</code>, <code>card2</code> אלא תן להם שמות לפי השימוש שלהם בקוד - לדוגמה <code>newCard</code>, <code>updatedCard</code> וכן על זה הדרך. לא כדאי להשתמש בראשי תיבות, לא עולה כסף לכתוב במילואו.</li>
<li>יש שתי דרכים להתנהל עם פרומיסים: הדרך הישנה: שימוש ב-API של הפרומיסים, כלומר: <code>then</code> ו-<code>catch</code>. הדרך החדשה: שמוש במילות המפתח - <code>async</code> ו-<code>await</code>.<br />
(לדעתי) מומלץ להיות עקבי בצורת ההתנהלות ולא לקפוץ בין אחד לשני כל הזמן.<br />
יש אומנם מקומות שבהם אין מנוס מלהשתמש ב-API של הפרומיסים, לדוגמה: אין תחליף לפונקציית Promise.all בתחביר ה-<code>async/await</code>-י. ובמקרים אלו ההכרח לא יגונה.</li>
<li>אם הקוד שמעדכן את רשימת ה-<code>anashim</code> זהה לקוד שמעדכן את ה-<code>cards</code>, ניתן לצרף אותם יחד לפונקציה ג'נרית לעדכון רשימה.</li>
<li>אאל"ט, אין צורך למשוך את האובייקט שוב מה-DB של WIX כדי לעדכן אותו, ניתן להשתמש באובייקט מהרשימה.</li>
</ul>
<p dir="auto">על פי כל הנ"ל, הייתי משכתב את הקוד שלך כך:</p>
<pre><code>function updateItemPrinted (table, item) {
  item.print = 'הודפס';
  return wixData.update(table, item);
}

await Promise.all([
  ...cards.map((card) =&gt; updateItemPrinted('card', card)),
  ...anashim.map(torem =&gt; updateItemPrinted('tormim', torem))
]);

console.log('הסתיים');
</code></pre>
<p dir="auto">קצר וקולע.<br />
יפה, לא?</p>
]]></description><link>https://tchumim.com/post/116377</link><guid isPermaLink="true">https://tchumim.com/post/116377</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Fri, 01 Jan 2021 13:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 11:25:03 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a><br />
אני מעדכן שני רשימות. אז אני שם את זה אחרי השני הם אכן  ממתינים אחד לשני? אני חושב ששוב לא הבנתי.</p>
<pre><code>await Promise.all(dard.map(item =&gt; {
  return wixData.get('card', item._id)
    .then((item2) =&gt; {
      console.log(item2);
      item2.print = 'הודפס';
      return wixData.update('card', item2).catch(err =&gt; err)
	      })
    .catch((err) =&gt; {
      const errorMsg = err;
    });
}))
await Promise.all(anashim.map(item4 =&gt; {
  return wixData.get('tormim', item4._id)
    .then((item6) =&gt; {
      console.log(item6);
      item6.print = 'הודפס';
      return wixData.update('tormim', item6).catch(err =&gt; err)

    })
    .catch((err) =&gt; {
      const errorMsg = err;
    });
})) .then(() =&gt; {
console.log("הסתיים");
 })
</code></pre>
]]></description><link>https://tchumim.com/post/116375</link><guid isPermaLink="true">https://tchumim.com/post/116375</guid><dc:creator><![CDATA[אבי 203]]></dc:creator><pubDate>Fri, 01 Jan 2021 11:25:03 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 11:20:30 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a> אמר ב<a href="/post/116372">לולאה שנתקעת ומדלגת פריטים</a>:</p>
<blockquote>
<p dir="auto">אני לא משתמש עד שאבין...</p>
</blockquote>
<p dir="auto"><img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<blockquote>
<p dir="auto">למשל למה בפעם השניה הזו<br />
Promise.all(anashim.map(item4 =&gt; {<br />
למה לא הוספת await</p>
</blockquote>
<p dir="auto">אתה צודק. אין סיבה להשתמש ב-Promise.all בלי לחכות לתוצאה.</p>
<blockquote>
<p dir="auto">וגם איפה למשל אני מבין שהסתימו שני התהליכים ורק לאחר מכן תכניס הודעה הסתיים סגור חלון וכדו'.</p>
</blockquote>
<p dir="auto">אחרי שחכית ל-promise.all.</p>
<pre><code>await Promise.all(myArray.map(item =&gt; doSomeAsyncOperationOnItem()));
console.log('הפעולה הסתיימה בהצלחה!');
</code></pre>
<blockquote>
<p dir="auto">אולי החטא הקדמון שלא הבנתי את מהות promise</p>
</blockquote>
<p dir="auto">לא "אולי", אלא ודאי <img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> .  אבל לצערנו, אתה לא היחיד, יש הרבה אנשים (בלי לנקוב בשמות... <img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/customizations/1e2050fd-ca54-4838-b226-04501bdebefa-smile.png?v=9d71ebe86e6" class="not-responsive emoji emoji-customizations emoji--smile" style="height:23px;width:auto;vertical-align:middle" title=":D" alt="undefined" /> ) שכותבים JS שנים ולא מבינים טוב מהות promise. אם תשקיע להבין את זה טוב, אני יכול לכתוב די בביטחון שההשקעה תחזיר את עצמה במהירות.</p>
]]></description><link>https://tchumim.com/post/116374</link><guid isPermaLink="true">https://tchumim.com/post/116374</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Fri, 01 Jan 2021 11:20:30 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 11:12:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> תודדהה.<br />
אני לא משתמש עד שאבין... <img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /><br />
רואה את ההבדל בכיתוב לא מבין לגמרי.</p>
<p dir="auto">למשל למה בפעם השניה הזו<br />
Promise.all(anashim.map(item4 =&gt; {<br />
למה לא הוספת await<br />
וגם איפה למשל אני מבין שהסתימו שני התהליכים ורק לאחר מכן תכניס הודעה הסתיים סגור חלון וכדו'.</p>
<p dir="auto">אולי החטא הקדמון שלא הבנתי את מהות promise</p>
<p dir="auto">אגב אולי זה באמת הבעיה שאם היה אחד שגיאה הוא עוצר את הכל.</p>
]]></description><link>https://tchumim.com/post/116372</link><guid isPermaLink="true">https://tchumim.com/post/116372</guid><dc:creator><![CDATA[אבי 203]]></dc:creator><pubDate>Fri, 01 Jan 2021 11:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to לולאה שנתקעת ומדלגת פריטים on Fri, 01 Jan 2021 11:09:20 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%90%D7%91%D7%99-203">@<bdi>אבי-203</bdi></a><br />
נראה לי שהתכוונת לקוד כזה:<br />
(אני מביא קוד ג'נרי לעדכון מערך בצורה אסינכרונית ואז לחכות שכל העדכונים יתבצעו)</p>
<pre><code>const myArray = await db.getSomeStuff(args);
await Promise.all(myArray.map(item =&gt; {
  return item.update(params);
}))
</code></pre>
<p dir="auto">ולתרגם להקשר שלך:</p>
<pre><code>await Promise.all(items.map(obj =&gt; {
  console.log(obj);
  return wixData.get('card', obj._id).then((item) =&gt; {
    item.print = 'הודפס';
    return wixData.update('card', item);
  });
}));
</code></pre>
<pre><code>Promise.all(anashim.map(item4 =&gt; {
  return wixData.get('tormim', item4._id)
    .then((item6) =&gt; {
      console.log(item6);
      item6.print = 'הודפס';
      return wixData.update('tormim', item6);
    })
    .catch((err) =&gt; {
      const errorMsg = err;
    });
}))
</code></pre>
<p dir="auto"><img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title=":warning:" alt="⚠" /> שים לב לשינויים בין קוד זה לקוד שלך. תדאג <em>להבין</em> את השינויים ו<em>למה</em> זה עובד. אחרת גם פעם הבא תסתבך.</p>
<p dir="auto">כללים מהירים:</p>
<ul>
<li>שימוש ב-await נועד רק עבור אובייקט מסוג promise</li>
<li>הפונקציה Promise.all מקבלת מערך של promise ומחזירה promise חדש שערכה העתידי הוא מערך של התוצאות של ה-promise-ים שהזנת לה.</li>
<li>השימוש ב-map היא דרך קצרה לקבל מערך של כל הפרומיסים של כל העדכונים. זה שווה לקוד זה (שאומנם ארוך יותר אבל יותר קריא):</li>
</ul>
<pre><code>const myArray = await db.getSomeStuff(args);
const promiseArray  = [];
for (const item of myArray) {
  const promise = item.update(params);
  promiseArray.push(promise);
}
await Promise.all(promiseArray);
</code></pre>
<hr />
<p dir="auto">אומנם קיימת בעיה בצורה זו: <code>Promise.all</code> מחזירה שגיאה מיד שאחד מהפריטים נכשלו מבלי לחכות לשאר הפרומיסים להסתיים.</p>
<p dir="auto">אפשר לפתור את זה על ידי שימוש בפונקציה יחסית חדשה: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled" target="_blank" rel="noopener noreferrer nofollow ugc">Promise.allSettled</a>, או שאתה מוסיף <code>catch</code> ככה:</p>
<pre><code>const myArray = await db.getSomeStuff(args);
await Promise.all(myArray.map(item =&gt; {
  return item.update(params).catch(err =&gt; err);
}))
</code></pre>
]]></description><link>https://tchumim.com/post/116370</link><guid isPermaLink="true">https://tchumim.com/post/116370</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Fri, 01 Jan 2021 11:09:20 GMT</pubDate></item></channel></rss>