Luc*_*non 4 javascript promise async-await
我有一个带有promise数组的函数,该数组可以有1到X个promise.
这些承诺基于条件进入数组.
我希望能够区分哪个API来自每个结果,而我无法实现一个干净的方法来实现它
let promises = [];
if (false) {
let promise1 = request(toUrl);
promises.push(promise1);
}
if (true) {
let promise2 = request(toUrl);
promises.push(promise2);
}
if (false) {
let promise3 = request(toUrl);
promises.push(promise3);
}
if (true) {
let promise4 = request(toUrl);
promises.push(promise4);
}
try {
let result = await Promise.all(promises);
} catch (error) {
console.log(error);
}
Run Code Online (Sandbox Code Playgroud)
所以,如果一切顺利,结果将是一系列结果.不知道哪个条件是真的,我如何知道result [0]是否是promise1,promise2或promise3的结果?
Sur*_*yan 14
您只需添加request(url)有关承诺的其他信息的响应即可
const promise1 = request(url).then(res => ({ res: res, promise: 'prmoise1' }))
Run Code Online (Sandbox Code Playgroud)
在Promise.all()你将获得上述形式的承诺的价值,并可以检测哪些承诺得到解决.
例
const promises = [];
if(true) {
const promise1 = fetch('https://jsonplaceholder.typicode.com/posts/1').then(res => ({ res: res, promise: 'promise1' }));
promises.push(promise1);
}
if(false) {
const promise2 = fetch('https://jsonplaceholder.typicode.com/posts/2').then(res => ({ res: res, promise: 'promise2' }));
promises.push(promise2);
}
Promise.all(promises).then(res => console.log(res));Run Code Online (Sandbox Code Playgroud)
小智 5
在我看来,我们可以使用以下代码来简化问题的复杂性 -
let promises = [];
let truthyValue = true,
falsyvalue = true;
let [promise1, promise2, promise3, promise4] = await Promise.all([
truthyValue ? request(toUrl) : Promise.resolve({}),
truthyValue ? request(toUrl) : Promise.resolve({}),
falsyValue ? request(toUrl) : Promise.resolve({}),
falsyValue ? request(toUrl) : Promise.resolve({})
]);
// promise1 will be called only when truthyValue is set
if (promise1) {
// do something
}
// promise2 will be called only when truthyValue is set
if (promise2) {
// do something
}
// promise3 will be called only when falsyValue is set
if (promise3) {
// do something
}
// promise4 will be called only when falsyValue is set
if (promise4) {
// do something
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5690 次 |
| 最近记录: |