zoukankan      html  css  js  c++  java
  • es6 promise

    promise作用: 用来控制异步执行代码的执行顺序
    如: 登录执行后跳转到登录页面

    promise定义:

    var p = new Promise(function(resolve, reject){
        //做一些异步操作
        setTimeout(function(){
            console.log('执行完成');
            resolve('随便什么数据');
        }, 2000);
    });

    Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。


    resolve函数的参数代表传递给下一个promise对象的数据

    promise 用法

    function runAsync1(){
        var p = new Promise(function(resolve, reject){
            //做一些异步操作
            setTimeout(function(){
                console.log('异步任务1执行完成');
                resolve('随便什么数据1');
            }, 1000);
        });
        return p;
    }
    function runAsync2(){
        var p = new Promise(function(resolve, reject){
            //做一些异步操作
            setTimeout(function(){
                console.log('异步任务2执行完成');
                resolve('随便什么数据2');
            }, 2000);
        });
        return p;
    }
    function runAsync3(){
        var p = new Promise(function(resolve, reject){
            //做一些异步操作
            setTimeout(function(){
                console.log('异步任务3执行完成');
                resolve('随便什么数据3');
            }, 2000);
        });
        return p;
    }
    
    runAsync1()
        .then(function(data){
            console.log('--------'+data);
            return runAsync2();
        })
        .then(function(data){
            console.log(data);
            return runAsync3();
        })
        .then(function(data){
            console.log(data);
        });

     Promise.all 作用:

    将不同的接口返回的数据拼和成自己的数据,通常这些接口之间没有关联(例如不需要前一个接口的数据作为后一个接口的参数)

    Promise.all 定义:

     Promise.all 可以接收一个元素为 Promise 对象的数组作为参数,当这个数组里面所有的 Promise 对象都变为 resolve 时,该方法才会返回。

    Promise.all 用法:

    var p1 = new Promise(function (resolve) {
        setTimeout(function () {
            resolve("Hello");
        }, 3000);
    });
    
    var p2 = new Promise(function (resolve) {
        setTimeout(function () {
            resolve("World");
        }, 1000);
    });
    
    Promise.all([p1, p2]).then(function (result) {
        console.log(result); // ["Hello", "World"]
    });

    Promise.all和Promise.race的区别

    相同点:同样接受一个数组
    不同点:Promise.race 只要promise对象的状态发生变化,无论是resolve还是reject,该方法都会返回

    参考文章:

    https://segmentfault.com/a/1190000002928371

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/wdx330616/p/7544549.html
Copyright © 2011-2022 走看看