我不得不在承諾之內嵌入一個承諾,這是好的,還是認爲不好的做法?嵌套承諾的並行效果?
- 我已經擁有一個方法,
fetchArticles
,fetchImages
,並main
類。- 的
main
是調用fetchArticles
+fetchImages
fetchArticles
運行從它返回一個承諾其他文件的功能之一,但我也對fetchArticles
類方法本身返回一個承諾,所以當它獲取的文章,它會繼續並獲取圖像。fetchImages
方法不承諾,但從另一個文件調用承諾的功能。
- 的
我不能確定這是否是實現parralel效果最好的方法是什麼?
main() {
// Call the promised fetchArticles class method
this.fetchArticles()
.then (() => this.fetchImages(() => {
this.res.json(this.articles.data);
}));
}
fetchArticles() {
return new Promise ((fullfil, rej) => {
// Calling a promised function which simply returns an array of articles
fetchArticles (this.parametersForApiCall)
.then ((data) => {
this.articles.data = data;
this.articles.imageIds = [1,5,2,8,99,1000,22,44,55,120,241]; // Extract image IDS and save to class this
fullfil();
})
.catch ((err) => {
console.log ("Something went wrong with api call", err);
res.json({error: "Something went wrong", code: 1011});
reject();
});
});
}
fetchImages (cb) {
// Calling a promised function which simply returns an array of images
fetchImages (this.imageIds).then((imgs) => {
this.images = imgs;
cb(); // Temp callback method
}).catch ((err) => {
console.log (err, "error finding images in then")
})
}
}
我應該使用類似async parallel的東西嗎?注意我暫時在fetchImages
方法中添加了一個callback
,直到我找到鏈接承諾的好解決方案。
嵌套的承諾是好:) – winhowes