2017-08-08 67 views
0

是否有可能使用“异步” NPM模块异步工作/等待在打字稿2.2倍如何启用async.mapLimit与打字稿异步工作/等待

目标: 我想创建一个web刮刀,使用旋转起来10个平行的HTTP请求:

https://caolan.github.io/async/docs.html#mapLimit

包裹HTTP函数的一个例子是如下:

async callUniRest(url: string): Promise<number> { 
    return new Promise<number>(resolve => { 
     unirest.get(url) 
      .end((response: any) => { 
       resolve(cheerio.load(response.body); 
      }); 
    }); 
} 

问题:

当我打电话

const myList: string[] = ['http...', 'http...', 'http...', 'http...'] 
async.mapLimit(myList, 10, callUniRest, function(err: any, results: any { 
    console.log(results); 
}) 
  • 回调的第一个元素后才被调用结束

问: 如何启用异步.mapLimit可以处理多个调用。

回答

0

否。async模块为不能或不会使用Promise的人提供实用程序和抽象。他们不混合。

更何况,当你有myList,所有的请求已发送。

async.mapLimit仅适用于接受回调的函数,而不适用于返回Promise的函数。

你可能想要的是使用蓝鸟的Promise.map() with the concurrency operator

+0

我想一个更好的问题将是如何使用异步伺机 –

+0

@JackMurphy随着计数器/堆栈,使并发性。没有内置的方法。因此我建议使用蓝鸟。 –