首页 > 解决方案 > Javascript = Promise.then:forEach 中的解析顺序

问题描述

我在 foreach 循环中管理承诺时遇到问题。

这是我使用的代码的表示:

function FinalFunction() {
    var list = GetList()
    list.forEach(element => {
        console.log('1');
        myFunction();
        console.log('3');
    }
    console.log('4');
}

function First() {
    queryDB().then(
         function (rs) {
             console.log('2');
         }
    );
}

queryDB = function(sql){
    ...
    connectToDB(cfg).then(
        function(){
            ...
        }
    );
    return def.promise;
}

connectoToDb = function(acfg) {
    fb.attach(acfg, 
        function(err,db) {
            ...
        }
    );
    return def.promise;
}

如果我在 foreach 中有 3 个元素,在我的控制台中我想

1
2
3
1
2
3
1
2
3
4

但是我有

1
3
1
3
1
3
4
2
2
2

使用 promises.then first>queryDB>connectToDB 链,我无法使用 await async 设置同步。

我应该在我的链中的哪个点声明它?

谢谢 :) !

标签: javascriptforeachpromisesynchronous

解决方案


推荐阅读