zoukankan      html  css  js  c++  java
  • xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

    Promise nested then execute order All In One

    Promise nested then

    nested Promise

    1. not return new Promise

    遇到 Promise 立即执行,Promise 后面紧跟着的第一个 then 也马上执行;
    后面的 then 按照 Promise 创建的先后顺序,依次执行;

    
    "use strict";
    
    /**
     *
     * @author xgqfrms
     * @license MIT
     * @copyright xgqfrms
     * @created 2020-10-01
     * @modified
     *
     * @description
     * @difficulty Easy Medium Hard
     * @complexity O(n)
     * @augments
     * @example
     * @link
     * @solutions
     *
     * @best_solutions
     *
     */
    
    const log = console.log;
    
    
    const promise = new Promise((resolve, reject) =>{
      log(1);
      resolve(1);
    });
    
    // then((json) => log(3, json), (err) => log(err));
    promise
    .then((v) => {
      // not new Promise ⚠️
      // return new Promise((ok, err) => {
      new Promise((ok, err) => {
        log(2);
        log(`v =`, v);
        // resolve callback, ok
        ok(`✅`);
        // reject callback, err
        err(`❌`)
      }).then((v) => {
        log(3);
        log(`v =`, v, `
    `);
        return v;
      }).then((v) => {
        log(4);
        log(`v =`, v, `
    `);
        return v;
      });
      // 遇到 Promise 立即执行,Promise 后面紧跟着的第一个 then 也马上执行,后面的 then 按照 Promise 创建的先后顺序,依次执行 then!
      return v;
    })
    .then((v) => {
      log(5);
      log(`v =`, v);
      return v;
    })
    .then((v) => {
      log(6);
      log(`v =`, v);
      return v;
    });
    
    
    /*
    
    1
    2
    v = 1
    3
    v = ✅
    
    5
    v = 1
    4
    v = ✅
    
    6
    v = 1
    */
    
    
    
    1. return new Promise
    
    "use strict";
    
    /**
     *
     * @author xgqfrms
     * @license MIT
     * @copyright xgqfrms
     * @created 2020-10-01
     * @modified
     *
     * @description
     * @difficulty Easy Medium Hard
     * @complexity O(n)
     * @augments
     * @example
     * @link
     * @solutions
     *
     * @best_solutions
     *
     */
    
    const log = console.log;
    
    
    const promise = new Promise((resolve, reject) =>{
      log(1);
      resolve(1);
    });
    
    // then((json) => log(3, json), (err) => log(err));
    promise
    .then((v) => {
      // return new Promise
      return new Promise((ok, err) => {
        log(2);
        log(`v =`, v);
        // resolve callback, ok
        ok(`✅`);
        // reject callback, err
        err(`❌`)
      }).then((v) => {
        log(3);
        log(`v =`, v);
        return v;
      }).then((v) => {
        log(4);
        log(`v =`, v);
        return v;
      });
      // return v;
    })
    .then((v) => {
      log(5);
      log(`v =`, v);
      return v;
    })
    .then((v) => {
      log(6);
      log(`v =`, v);
      return v;
    });
    
    
    /*
    
    1
    2
    v = 1
    3
    v = ✅
    4
    v = ✅
    5
    v = ✅
    6
    v = ✅
    
    */
    
    

    refs



    ©xgqfrms 2012-2020

    www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


  • 相关阅读:
    HTML标签大全
    PHP实现QQ第三方登录代码
    php链接access并查询列出
    php连接Access数据库
    获取文件信息
    动态网页转伪静态
    asp读取指定目录下的文件名
    如何设置VBA代码的密码?如何取消VBA代码的密码?
    ol序号并在序号加背景色
    免费ASP空间
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/13983194.html
Copyright © 2011-2022 走看看