zoukankan      html  css  js  c++  java
  • Promise

     promise 可解决的问题:

    1. 可以支持多个并发的请求,获取并发请求返回的数据
    2. 解决回调地狱的问题
    3. 真正用同步代码写异步操作的是 async await

    Promise两个特点:

    1. 对象的状态不受外界影响
    2. 一旦状态改变,就不会再变,任何时候都可以得到这个结果

    Promise三种状态:

    1. Pending(进行中)
    2. Resolved(已完成,又称 Fulfilled)
    3. Rejected(已失败)

    Promise有两个参数,第一个是成功resolve的调用的方法,第二个是失败reject调用的方法

      new Promise((resolve, reject) => {

        if (Math.random() * 100 < = 90) {

          resolve('Hello, Promises!');//成功

        }

        reject(new Error('error'));//失败

      });

      resolve 和 reject 本身也是函数,它们用于将返回值返回给 promise 对象,当成功时使用 resolve 函数将值返回,当失败或遇到错误时使用reject 函数中传递错误对象告知 promise 对象

    Promise的then 方法:

      then 方法就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。Promise 的优势就在于这个链式调用。我们可以在 then 方法中继续写 Promise 对象并返回,然后继续调用 then 来进行回调操作。

      

      const delay = (ms) => new Promise(

        (resolve) => setTimeout(resolve, ms)

      );

      delay(2000).then(() => {

        console.log('Resolved after 2 seconds')

        return delay(1500);

      }).then(() => {

        console.log('Resolved after 1.5 seconds');

        return delay(3000);

      }).then(() => {

        console.log('Resolved after 3 seconds');

        throw new Error();

      }).catch(() => {

        console.log('Caught an error.');

      }).then(() => {

        console.log('Done.');

      });

    by  FYM

  • 相关阅读:
    public static void Invoke (Action action)
    C#编写WIN32系统托盘程序
    C#的互操作性:缓冲区、结构、指针
    SQLServer异步调用,批量复制
    Python体验(10)-图形界面之计算器
    Python体验(09)-图形界面之Pannel和Sizer
    Python体验(08)-图形界面之工具栏和状态栏
    Python体验(07)-图形界面之菜单
    C#利用WIN32实现按键注册
    Javascript猜数字游戏
  • 原文地址:https://www.cnblogs.com/widgetbox/p/12989354.html
Copyright © 2011-2022 走看看