📜  JavaScript | Promise.allSettled() 方法

📅  最后修改于: 2022-05-13 01:56:25.241000             🧑  作者: Mango

JavaScript | Promise.allSettled() 方法

Promise是一个 JavaScript 对象,它可以处于待处理、已完成或已拒绝三种状态。 JavaScript 中的Promise.allSettled()方法用于在所有输入都已完成或被拒绝时获得一个承诺。

它基本上返回一个承诺,当传递的所有其他承诺都被履行或拒绝时,它会得到解决,并在输出中显示对象数组,特别是单独显示每个承诺的状态和值。

句法:

Promise.allSettled(iterable);

参数:此方法接受单个参数可迭代,它接受一个承诺数组或包含一些对象的普通数组。

返回值:此方法返回以下值:

  • 如果传递的参数为空,则返回一个已解析的 Promise。
  • 对于所有其他情况,它返回一个待处理的 Promise,以及在其中单独传递的所有 Promise 的状态和值。

示例 1:

Javascript


Javascript


Javascript
let first_promise = Promise.resolve(200);
 
let second_promise = Promise.reject("Rejected Promise");
 
let third_promise = new Promise((resolve, reject) =>{
    setTimeout(() => resolve(500), 100)
});
 
let result = Promise.allSettled([first_promise, second_promise, third_promise]);
result.then((value) => console.log(value));
 
// This code is contributed by Aman Singla....



输出:

"fulfilled"
 50
"rejected" 
 undefined

示例 2:

Javascript


输出:

"Completed in 1000"
Array [Object { status: "fulfilled", value: "Completed in 1000" }, 
Object { status: "fulfilled", value: "Completed in 2000" }]

示例 3:在此示例中,我们显示了执行多个 Promise 并将它们传递给 Promise.allSettled() 方法时收到的确切输出。

Javascript

let first_promise = Promise.resolve(200);
 
let second_promise = Promise.reject("Rejected Promise");
 
let third_promise = new Promise((resolve, reject) =>{
    setTimeout(() => resolve(500), 100)
});
 
let result = Promise.allSettled([first_promise, second_promise, third_promise]);
result.then((value) => console.log(value));
 
// This code is contributed by Aman Singla....

输出:

[
  { status: 'fulfilled', value: 200 },
  { status: 'rejected', reason: 'Rejected Promise' },
  { status: 'fulfilled', value: 500 }
]

支持的浏览器:

  • 谷歌浏览器 6.0 及以上
  • Internet Explorer 9.0 及更高版本
  • Mozilla 4.0 及更高版本
  • Opera 11.1 及更高版本
  • Safari 5.0 及以上