相关疑难解决方法(0)

在新的Promise()构造函数中使用async/await是一种反模式吗?

我正在使用该async.eachLimit功能一次控制最大操作数.

const { eachLimit } = require("async");

function myFunction() {
 return new Promise(async (resolve, reject) => {
   eachLimit((await getAsyncArray), 500, (item, callback) => {
     // do other things that use native promises.
   }, (error) => {
     if (error) return reject(error);
     // resolve here passing the next value.
   });
 });
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我无法将该myFunction函数声明为异步,因为我无法访问eachLimit函数的第二个回调内的值.

javascript asynchronous node.js async-await

62
推荐指数
3
解决办法
3万
查看次数

如何做promise.all的数组承诺?

我正在尝试并行运行函数数组,当每个人都完成时我想要对该结果进行处理.我正在使用承诺.现在,我可以将所有函数放在一个数组中,并且可以做Promise.all(函数数组)但是我有类似的数组

[[promise1, promise2], [promise3,promise4], [promise5,promise6]],
Run Code Online (Sandbox Code Playgroud)

每个承诺都是承诺的功能.Promise参考文档说Promise.all中的参数应该是一个可迭代的对象,我的数组是可迭代的.但这对我不起作用.我认为它正在执行[promise1,promise2]作为承诺而不是个人承诺.

任何人都可以帮助我如何实现它,还是有更好的方法?

javascript node.js promise

19
推荐指数
5
解决办法
2万
查看次数

Promise.all与嵌套的Promise.all

我已嵌套数组,我能够检索第二级数组的promise,但不知道如何实现then一次顶级结束.

result.forEach(function(entity){ // outer list ???
    return Promise.all(entity.urls.map(function(item){
        return requestURL(item.href);
    }));
});
Run Code Online (Sandbox Code Playgroud)

例如,如果results有两个或两个以上项目,每个item有10个或多个URL抓取,我们将如何实现then[Promise.all][1]所有承诺.原生解决方案请.

基本上以正确的方式处理嵌套的promises数组.

数据结构:

var result = [
    {
        urls: [
            {href: "link1"},
            {href: "link2"},
            {href: "link3"}
        ]
    },
    {
        urls: [
            {href: "link4"},
            {href: "link5"},
            {href: "link6"}
        ]
    }
];
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×3

node.js ×3

promise ×2

async-await ×1

asynchronous ×1