• promise中合并对象的实例方法


    目录

    promise.all

    allSettled  

    any

    race:

    封装promiase---ajax:

    回调地狱


    promise.all

      1. 作用:和并请求

      2. 返回所有请求成功之后,返回数组,状态:fulfilled

      3. 返回所有请求中第一次抛出的错误,状态:rejected

      4. 如果在子请求中使用catch处理过了错误,则promise.all不会返回这个错误,如果剩下的都成功则返回一个数组,catch处理过的值为undefined

    allSettled  

    不管成功还是失败都是等全部结束,返回一个数组

    any

    返回第一个成功的回调,在第一个成功

    1. (function () {
    2. // promise.all
    3. // 1. 作用:和并请求
    4. // 2. 返回所有请求成功之后,返回数组,状态:fulfilled
    5. // 3. 返回所有请求中第一次抛出的错误,状态:rejected
    6. // 4. 如果在子请求中使用catch处理过了错误,则promise.all不会返回这个错误,如果剩下的都成功则返回一个数组,catch处理过的值为undefined
    7. // allSettled 不管成功还是失败都是等全部结束,返回一个数组
    8. // any 返回第一个成功的回调,在第一个成功的回调之前,任意一个实例已经进行了。then或者。catch的处理,则返回:成功fulfilled-undefined
    9. let p1 = new Promise((resolve, reject) => {
    10. reject('失败')
    11. setTimeout(() => {
    12. resolve('chengg1')
    13. }, 1000)
    14. })
    15. let p2 = new Promise((resolve, reject) => {
    16. setTimeout(() => {
    17. resolve('成功2')
    18. }, 3000)
    19. })
    20. // .then((res)=>{
    21. // console.log('resp2', res)
    22. // })
    23. let p3 = new Promise((resolve, reject) => {
    24. setTimeout(() => {
    25. resolve('cheng3')
    26. }, 4999)
    27. })
    28. // .then((res)=>{
    29. // console.log('resp3', res)
    30. // })
    31. let all = Promise.allSettled([p1, p2, p3])
    32. .then(
    33. (value) => {
    34. console.log('value-any', value)
    35. console.log(all, 'all')
    36. }, (reason) => {
    37. console.log('reason-any', reason)
    38. })
    39. console.log(all, 'all')
    40. })()

    race:

    返回第一个状态结束的

    1. (function () {
    2. //将多个promise实例包装成一个新的promise实例
    3. //1. 返回一个,实例中改变状态的值
    4. function r1() {
    5. return new Promise((resolve, reject) => {
    6. setTimeout(()=>{
    7. resolve('请求成功')
    8. },3000)
    9. })
    10. }
    11. function r2() {
    12. return new Promise((reslove, reject) => {
    13. setTimeout(()=>{
    14. reslove('请求超时')
    15. },2000)
    16. })
    17. }
    18. Promise.race([r1(),r2()]).then((value)=>{
    19. console.log('value', value) // 请求超时
    20. })
    21. })()

    封装promiase---ajax:

    1. (function(){
    2. // 封装ajax
    3. // 请求 https://api.github.com/search/users?q=xx
    4. function Ajax(url){
    5. return new Promise((resolve,reject)=>{
    6. //1. 创建
    7. let xhr = new XMLHttpRequest()
    8. xhr.open('GET',url,true)
    9. xhr.send(null)
    10. xhr.onreadystatechange = function(){
    11. if(xhr.readyState!==4) return
    12. if (xhr.status>=200 && xhr.status<300) {
    13. resolve(xhr.response)
    14. }else {
    15. // console.log(xhr.statusText)
    16. reject(new Error(xhr.status))
    17. }
    18. }
    19. xhr.onerror = function(){
    20. reject(new Error(xhr.statusText))
    21. }
    22. xhr.responseType = 'json'
    23. })
    24. }
    25. Ajax('https://api.github.com/search/users?q=tian')
    26. .then(
    27. (value)=>{
    28. console.log(value)
    29. },
    30. (reason)=>{
    31. console.log(reason)
    32. }
    33. )
    34. })()

    回调地狱

    多个串联的异步操作

    第一个.then  里面返回一个promise对象,第二个.then就是第一个返回的那个promise对象

  • 相关阅读:
    实时聊天系统PHP
    leetcode-260.只出现一次的数字 III
    【日常记录】——对BigDecimal除法运算时遇到的Bug
    金融数据分析(一)
    Toronto Research Chemicals 合成中间体丨异亮氨酸
    京东三面:我要查询千万级数据量的表,怎么操作?
    Python气象绘图笔记——常用气象绘图函数脚本封装与使用记录
    腾讯云CVM标准型S4服务器性能测评_CPU_网络收发包PPS详解
    汽车蓄电池
    CX5120-0125倍福CPU模块维修PLC控制器CX5120全系列主机电脑深圳捷达工控维修
  • 原文地址:https://blog.csdn.net/qq_52179917/article/details/127912421