פעולה סינכרונית nodejs
-
@avr416 אמר בפעולה סינכרונית nodejs:
@חוקר
אם global הוא אובייקט, אתה יכול להמיר אותו למערך ולהעביר אותו ישירות לפרומיס.all וא"צ ליצור עוד מערך של פרומיסס.Promise.all(Object.keys(global).map(k=>global[k]))
זה אמור להחזיר לך מערך של כל הפרומיסים שדחפת לגלובל
בכל מקרה, אני חוזר בי..
הדרך שלך עדיפה מבחינת ביצועים על ההצעה שלי. כי אתה עשית הכל בלולאה אחת, ואני הוספתי לך כאן עוד כמה (מאחורי הקלעים..) -
@חוקר אם אתה רוצה בתוצאת הפרומיס נתון נוסף ממה שהוא מחזיר במקור, אתה יכול להוסיף את הנתון בthen שבעצם יוצר פרומייז נוסף בהסתיים הראשון:
var promises = []; for (let i =0;i<3;i++) { console.log('files'+i); var pr = ftp.list($`/limudklali/${HDate.getFullYear()}/${Month_arr[HDate.getMonth()]}/`) .then(x => { return {source: i, result: x} })); promises.push(pr); } Promise.all(promises).then(function(values) { ftp.end(); console.log(values); });