當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript Promise any()用法及代碼示例


JavaScript Promise any() 方法是一個靜態方法,它采用 Promise 數組作為參數並返回第一個已實現的 Promise。當數組中的所有 Promise 返回拒絕或者數組為空時,它會返回拒絕值。當所有承諾都被拒絕時,會返回 AggregateError,其中包含拒絕的原因。

用法:

Promise.any(iter)

Parameters: 它隻需要一個參數。

  • iter: 它是可迭代的承諾。

返回值:它返回一個承諾:

  • rejected 如果傳遞的參數為空
  • asynchronously fulfilled如果遇到第一個履行的承諾
  • asynchronously rejected 如果所有的承諾都返回拒絕。在這種情況下,返回AggregateError。

示例 1:此示例展示了 Promise.any() 方法的基本用法。

Javascript


let prom1 = new Promise((resolve, reject) => {
    reject("Failure");
})
let prom2 = new Promise((resolve, reject) => {
    reject("Failed to load");
})
let prom3 = new Promise((resolve, reject) => {
    resolve("Worked");
})
let prom4 = new Promise((resolve, reject) => {
    resolve("Successful");
})
let prom = [prom1, prom2, prom3, prom4];
Promise.any(prom).then((val) => { console.log(val) });

輸出:前兩個承諾被拒絕,第一個成功的承諾是 prom3 返回,其值使用 then 捕獲並打印在控製台上

Worked

示例 2:此示例顯示了如何在任何方法中拒絕 Promise。

Javascript


let prom1 = new Promise((resolve, reject) => {
    reject("Failure");
})
let prom2 = new Promise((resolve, reject) => {
    reject("Failed to load");
})
let prom3 = new Promise((resolve, reject) => {
    reject("Unsuccessful");
})
let prom4 = new Promise((resolve, reject) => {
    reject("Rejected");
})
let prom = [prom1, prom2, prom3, prom4];
Promise.any([])
    .then((val) => console.log(val))
    .catch(err => console.log(err));
Promise.any(prom)
    .then((val) => console.log(val))
    .catch(err => console.log(err));

輸出:當我們在任何方法中傳遞一個空數組時,它會被自動拒絕並返回AggregateError,而且如果數組中傳遞的所有承諾都返回被拒絕的相同輸出,則會顯示相同的輸出。

AggregateError: All promises were rejected
AggregateError: All promises were rejected

支持的瀏覽器:

  • 穀歌瀏覽器
  • 火狐瀏覽器
  • Opera
  • 蘋果瀏覽器

我們有 Javascript Promise 方法的完整列表,要檢查這些方法,請閱讀 Javascript Promise 參考文章。



相關用法


注:本文由純淨天空篩選整理自shobhit_sharma大神的英文原創作品 JavaScript Promise any() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。