日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Promise.all 的異常處理,我希望大家一定要了解一下!

來源: 責編: 時間:2024-03-29 17:17:24 253觀看
導讀前言大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心背景咱們在開發中,大多數時間都是一個異步操作一個異步操作去執行的,但是有一些特殊情況,需要一股腦去執行多個異步操作,比如

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心lqS28資訊網——每日最新資訊28at.com

背景

咱們在開發中,大多數時間都是一個異步操作一個異步操作去執行的,但是有一些特殊情況,需要一股腦去執行多個異步操作,比如:lqS28資訊網——每日最新資訊28at.com

  • 多表單校驗:只有所有表單都校驗通過才能提交
  • 多接口請求:只有所有接口都請求成功才能進行下一步操作

這時候就可以用到Promise.all這個方法了lqS28資訊網——每日最新資訊28at.com

Promise.all

基本特性

簡單說說這個方法的使用或特性吧:lqS28資訊網——每日最新資訊28at.com

  • 接收一個 Promise 數組,執行結果返回一個新的 Promise
  • 所有 Promise 都成功的時候,返回的 Promise 才是成功
  • 要是有一個 Promise 失敗,則返回的 Promise 是失敗

基本使用

// 模擬異步操作const request = (delay, flag = true) => {  return new Promise((resolve, reject) => {    setTimeout(() => {      if (flag) {        resolve(`成功了${delay}`)      } else {        reject(`失敗了${delay}`)      }    }, delay)  })}const fun = async (promises) => {  Promise.all(promises)    .then(res => {      console.log('res', res)    })    .catch(error => {      console.log('error', error)    })}fun([request(1000), request(500)])// res [ '成功了1000', '成功了500' ]fun([request(1000), request(500, false)])// error 失敗了500

問題

Promise.all還是很好用的,但是問題來了,其中有一個錯誤的話,就只會輸出這個失敗的值,而忽略了其他成功的值,那咋辦呢?我們需要自己去收集才行:lqS28資訊網——每日最新資訊28at.com

const fun = async (promises) => {  Promise.all(    promises.map(promise => {      return promise.catch(err => err)    })  )    .then(res => {      console.log('res', res)    })}fun([request(1000), request(500, false)])// res [ '成功了1000', '失敗了500' ]

Promise.allSettled

其實在ES2020中,JavaScript提供了一個新語法Promise.allSettled,他能直接完成我們上面所做的處理:lqS28資訊網——每日最新資訊28at.com

  • 接收一個 Promise 數組,執行結果返回一個成功的 Promise
  • 返回 Promise 狀態為成功
  • 返回 Promise 的值是一個數組
const fun = async (promises) => {  Promise.allSettled(promises)    .then(res => {      console.log('res', res)    })}fun([request(1000), request(500, false)])// res [//   { status: 'fulfilled', value: '成功了1000' },//   { status: 'rejected', reason: '失敗了500' }// ]

lqS28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-80519-0.htmlPromise.all 的異常處理,我希望大家一定要了解一下!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: []byte與string的兩種轉換方式和底層實現

下一篇: SpringBoot + Lua = 王炸!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 溧阳市| 澄城县| 甘谷县| 临洮县| 长子县| 将乐县| 巫山县| 宣武区| 曲松县| 临海市| 民乐县| 陈巴尔虎旗| 阳曲县| 什邡市| 双流县| 定日县| 哈巴河县| 庆安县| 淮北市| 汝阳县| 台东市| 平武县| 桃江县| 武穴市| 错那县| 潼南县| 蓝田县| 达州市| 喜德县| 怀集县| 扶绥县| 南靖县| 山东省| 扬中市| 奇台县| 霍邱县| 荆门市| 临城县| 汝南县| 西宁市| 利津县|