如何在每个循环中等待每个增量步骤,直到内部过程没有成功?

时间:2016-10-17 10:21:04

标签: asynchronous meteor underscore.js each

我有数组列表,例如:

var resultArray = ['a','b','c','d','e'];

我在我的代码中使用了这个数组迭代:

var updateArray = [];
_.each(resultArray, function (value, index) {
    //execute this function for file uploading.. 
    processMyFunction(value, function (error, success) {
        if(error) {
            //code to push it in my new array list
            updateArray.push({value:value,message:error});
        }
        else {
            //code to push it in my new array list
            updateArray.push({value:value,message:error});
        }
    });
    console.log(updateArray)
});

这里没有给我更新控制台。由于上传功能需要时间来执行此操作,因此它来自此processMyFunction功能。 我应该如何让这个_.each等到我的功能没有完成它的过程?

有关于此的任何建议吗?

1 个答案:

答案 0 :(得分:0)

如何将async / await与reduce结合使用? 使用ES7,这应该是可能的。

e.g。

updateArray = await updateArray.reduce(async (acc, value) => {
    acc = await acc;

    await processMyFunction(value, function (error, success) {
        if(error) {
            //code to push it in my new array list
            acc.push({value:value,message:error});
        }
        else {
            //code to push it in my new array list
            acc.push({value:value,message:error});
        }
    });

    return acc;

}, []);

console.log(updateArray);

<强>更新 在我对此进行了一些研究后,我还发现this有趣的帖子。