如何在javascript中汇总异步请求的结果

时间:2018-01-15 22:23:12

标签: javascript asynchronous

好的,所以需要构建一个消息数组。 我有一个数据库表,其中包含依赖于另一个表的消息信息。我可以使用promise来提取结果,但是当我遍历结果中的行时,我无法将它们保持在一起。

let messages = [];

dbOps.getAll(dbCon, "expo_outbox")
 .then(function(rows){

// iterate for each message
for (var i = 0; i < rows.length; i++){
    mobileMessage = rows[i];

    dbOps.getById(dbCon, mobileMessage.mobile_device_id, "mobile_devices")
        .then(function(mobileDevice) {
            regKey = mobileDevice.reg_key;
            console.log(` reg key ${regKey} gets ${mobileMessage.message}`);
            messages.push({
              to: regKey,
              sound: 'default',
              body: mobileMessage.message
           })
    })
}

如何组装此消息数组并让自己能够在知道已完成后台请求的情况下对其进行操作?谢谢...

1 个答案:

答案 0 :(得分:1)

您可以使用Promise.all

const promises = [
    new Promise(resolve => setTimeout(resolve, 0, 1)),
    new Promise(resolve => setTimeout(resolve, 0, 2))
];
Promise.all(promises)
    .then(data => {
        console.log("All promises resolved!", data);
    })
    .catch(err => {
        console.log("Error executing promise");
    });

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all