javascript - 插入空洞的 promise 并稍后重新分配

标签 javascript promise

var promises = []

array.forEach(element, i => {
    promises[i] = functionThatReturnsAPromise(element);
    if (somecondition) {
        promises[i] = new Promise(function(){}); // empty initial promise
        waitForSomeValue.then(function(result){
            promises[i] = functionThatReturnsAPromise(result); // reassign promise
        });   
    }
});

Promise.all(promises)
    .then(function(result){
        console.log(result);
    });

由于存在一种情况,我需要先获取值,然后返回一个 promise ,所以我创建了一个空 promise 并重新分配它。然而,这不起作用,我的意思是 Promise.all 永远不会返回结果。我做错了什么?

最佳答案

你的 promise 永远不会兑现。调用 Promise.all 后,重新分配数组中的值不会改变任何内容。您应该使用链接来分配一个同时执行这两个操作的 Promise,等待另一个值,然后等待您的值。

array.forEach(element, i => {
    if(!somecondition)
        promises[i] = functionThatReturnsAPromise(element);
    else {
        promises[i] = waitForSomeValue.then(function(result){
            return functionThatReturnsAPromise(result);
        });   
    }
});

或者更简单:

promises = element.map(el => {
    if(!somecondition)
        return functionThatReturnsAPromise(el);

    return waitForSomeValue.then(functionThatReturnsAPromise);   
});

关于javascript - 插入空洞的 promise 并稍后重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526923/

相关文章:

promise - 如何让一个 JavaScript 库兼容多个 Promise 库?

node.js - 获取 promise 的值(value)并分配给变量

javascript - 递归 promise 会遭受内存泄漏吗?

jquery - 是否有一个编辑器可以使用 jQueryUI 等 JavaScript 框架构建 Web UI?

javascript - 从 Dojo 中的对象列表创建表的最佳方法?

javascript - 使用 Javascript 选择一个完整的表格(将被复制到剪贴板)

javascript - 背景网格未附加我的自定义单元格

javascript - Android - 是否可以从 PhoneGap 中包装的应用程序激发 native Intent

javascript - (Nodejs + Restify)发送后无法设置标题 - promise 拒绝警告

node.js Q Promise 然后是 Promise 链