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

     

  • 相关阅读:
    jmeter压力测试
    反射【类Class、成员变量Field、方法Method】
    模块十 python标准库
    模块五 python常用数据结构
    模块四 python函数
    模块三 python控制流语法
    模块二 python基本数据类型与操作
    第四章后总结文档
    第六章节练习
    第五章节练习
  • 原文地址:https://www.cnblogs.com/lipu12281/p/11818268.html
Copyright © 2011-2022 走看看