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

  • 相关阅读:
    二进制兼容
    non-fragile:oc2.0特性--继承结构的父类内存布局变化时子类是否需要重新编译的问题
    [objc explain]: Non-fragile ivars
    函数响应式编程(FRP)思想-Callback风格
    FRP-Functional Reactive Programming-函数响应式编程
    AWESOME SWIFT-swift.libhunt.com-swift类库网站
    iOS
    视图逻辑、应用逻辑、业务逻辑
    laravel微信自定义分享
    实现手机网页调起原生微信朋友圈分享的工具nativeShare.js
  • 原文地址:https://www.cnblogs.com/wdx330616/p/7544549.html
Copyright © 2011-2022 走看看