javascript - 在多维数组中获取 Promise 的结果

标签 javascript arrays multidimensional-array promise

我有一系列多维的 promise 需要解决。如果我 console.log 结果,我可以查看数组,每个数组中都有一个 Promise 以及一个 [[PromiseStatus]] 和一个 [[PromiseValue]]。我如何获得 promise 值?

这是一段代码:

(resourcePromises 只是一个 promise 的多维数组)。

    Promise.all(resourcePromises).then(function(values)
    {
        console.log(values);
    });

然后变量值将保存多个数组,并且在每个数组中都有一个我试图从中获取值的 promise 列表。

最佳答案

听起来您需要在最深的级别运行 Promise.all,然后是下一个最深的级别,依此类推,直到到达顶部。对于二维数组,这将是:

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

如果您想进入任意深度,那么您需要为每个级别在 mapall 之间进行选择:

function deepAll(array) {
    if (array instanceof Promise)
        // Just in case...
        return array;
    else if (array.length == 0)
        // The 'real' function will fail with an empty array and it's the same in both cases anyhow.
        return [];
    else if (Array.isArray(array[0]))
        // There's another array level, so turn it into an array of promises.
        return array.map(deepAll);
    else
        // This is an array of promises, and we already have a function for that case.
        return Promise.all(array);
}

deepAll(promises).then(function(values) {
    console.log(values);
});

关于javascript - 在多维数组中获取 Promise 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36517870/

相关文章:

javascript - contenteditable div 中的 n gram 突出显示

javascript - 在 javascript 中返回函数,理解作用域和闭包

JAVASCRIPT:如何浏览对象

arrays - 一维生命游戏的非迭代算法

javascript - JavaScript 类中的属性可以有多个值吗?

php - 我如何动态创建多维javascript数组

javascript - 将 Typescript 与样式化组件和 Material UI 结合使用

javascript - 在javascript中跳跃动画?

c# - 将二维 C# 数组的内容存储到 csv 文件中

C++使用构造函数中的值初始化类中的二维基本数组