Мне нужно было вложить обещание в обещание, это нормально, или считается плохой практикой?Вложенные обещания для параллельного эффекта?
- У меня есть класс, который имеет метод,
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")
})
}
}
Должен ли я использовать нечто вроде асинхронной параллели? Примечание. Я временно добавил callback
в методе fetchImages
, пока не найду хорошее решение для цепочки обещаний.
вложенными обещает хорошие :) – winhowes