zoukankan      html  css  js  c++  java
  • 关于promise的认识

    1.不用纠结promise为什么是异步的问题,promise作为一个函数本身和同步异步没有什么关系,含有两个形参(resolve,reject),这两个形参都为函数,只是一般用来处理异步计算,它的作用是可以把异步的问题写的和同步一样。通过then()和catch()来解决异步处理问题,一般用于处理回调地狱问题。

    Promise对象有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败),一旦状态改变,就不会再变。

    2.为什么说promise可以解决回调函数的问题

    因为promise在执行过程中一定会返回一个状态给你,Promise实现了链式调用,在每次调用then之后返回的都是一个Promise,并且是一个全新的Promise,原因也是因为状态不可变。如果你在then中使用了 return,那么 return 的值会被 Promise.resolve() 包装

    因此,可以很好的解决回调地狱的问题。

    回调地狱

    ajax(url, () => {
        // 处理逻辑
        ajax(url1, () => {
            // 处理逻辑
            ajax(url2, () => {
                // 处理逻辑
            })
        })
    })

    可写为

    ajax(url)
      .then(res => {
          console.log(res)
          return ajax(url1)
      }).then(res => {
          console.log(res)
          return ajax(url2)
      }).then(res => console.log(res))

    将promise嵌套在函数里用return的方式返回,是为了防止promise立即执行

    参考:https://es6.ruanyifeng.com/#docs/promise

     

  • 相关阅读:
    cpu时钟周期
    调参学习
    力扣:堆
    学习率衰减问题
    力扣:图之并查集问题
    Java判断空字符串
    python读取文件通过正则过滤需要信息然后保存到新文件里
    python换行写入文件
    Robotium solo.goBack();不起作用,解决方案
    Android清除本地数据缓存代码
  • 原文地址:https://www.cnblogs.com/lipu12281/p/11818268.html
Copyright © 2011-2022 走看看