2017-08-08 39 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隨着計數器/堆棧,使併發性。沒有內置的方法。因此我建議使用藍鳥。 –