簡體   English   中英

Javascript Then() Promise 不能異步工作

[英]Javascript Then() Promise is not working Asynchronously

我試圖弄清楚如何異步制作這個 Firestore 集合。 我目前將它放在遞歸 function 中,因為 for 循環也不起作用。 我認為通過使用遞歸 function 可以讓我更好地控制何時啟動 function,但它仍然無法正常工作。 請幫忙。 我知道這對大多數人來說很容易解決。

const fakeIt = async () => {
    console.log("A");
    
    var itemsCreated = 1;
    items(0, itemsCreated);
    
    async function items(num, itemsCreated){
        if(num < itemsCreated){
            console.log("B");
            
            await db.collection('items').add({
                          active: true
            }).then(async (item) => {
                console.log("C");
                items(num + 1, itemsCreated)
            });
        }else{
            console.log("Done");
        }
    }
}
Array(2).fill(0).forEach(fakeIt);

我得到的打印輸出如下:

A
B
A
B
C
Done
C
Done

我需要以下結果:

A
B
C
A
B
C
Done

我通過對 fakeIt 循環使用遞歸 function 來解決這個問題。 我擺脫了所有的異步等待,一切都很完美。 感謝那些發表上述評論的人。

function fakeIt(number, count) {

     if (number < count) {

          console.log("A");
    
          var itemsCreated = 1;
          items(0, itemsCreated);
    
          function items(num, itemsCreated){

               if(num < itemsCreated){
                    console.log("B");
            
                   db.collection('items').add({
                          active: true
                    }).then(async (item) => {
                         console.log("C");
                         items(num + 1, itemsCreated)
                    });
               }else{

                    fakeIt(number+1, count)
               }
       }else{

            console.log("Done");
       }
}
fakeIt(0, 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM