我正在使用一個節點庫,它允許進行簡單的http請求並返回一個承諾 - 這很好地工作,因爲它允許多個並行進行,而且我然後用Promise.all()
收集它們。但是,http請求只是返回一個字符串,我需要知道關於每個請求的一些額外的標識信息。所以我通過一種方法來做到這一點,即將請求承諾中的某些內容鏈接起來,並將這些信息添加進來。這是我迄今爲止所獲得的代碼,顯示將一個此類請求添加到稍後將收集的承諾數組中:向承諾的結果添加額外的數據
var promises = [];
promises.push(new Promise(function(resolve, reject){
ReqPromise('http://some.domain.com/getresult.php')
.then(function(reqResult) {
resolve({
source: 'identifier',
value: reqResult
});
});
}));
而這就是我回來的這個承諾,當它決定:
{
source: 'identifier'
value: 1.2.3.4
}
這是理想的方式來「標記」的承諾,結果呢?還是有什麼承諾我誤解了,這意味着我不需要像上面那樣創造額外的承諾?請注意,ReqPromise
位於外部庫中,因此很難使其獲取額外的參數並將其返回。
OK,請忽略的問題1 - 我還以爲是打印結果_inside_它處理解決承諾的循環,但事實證明我不是,所以這是整個陣列 - 我發現,一旦我將多於一件事情推入'promises'。我的錯。問題2仍然存在 - 這是達到預期結果的最佳方式嗎? – dsl101
避免['Promise' constructor antipattern](http://stackoverflow.com/q/23803743/1048572)! – Bergi
請[編輯]您的問題,以顯示您如何檢查您的結果,或刪除帖子中的第一個問題。 – Bergi