• 关于angular $q 和 promise


    ES6中的promise

    白话:  处理异步回调的一个构造函数, 解决了以前的不停的嵌套callback的方式

    1:

    function  run1() {
        var p= new Promise(function (resolve,reject) {
            setTimeout(function () {
                console.log("no1");
                // 异步操作成功后的处理函数
                resolve("promise1");
                // 异步操作失败后的处理函数
                reject("error1")
            },2000)
        });
        return p
    }
    
    run1().then(function (data) {
        console.log(data);
    }).

    结果:no1   prosemise1

    2: 链式操作的不停回调。

    function  run1() {
        var p= new Promise(function (resolve,reject) {
            setTimeout(function () {
                console.log("no1");
                // 异步操作成功后的处理函数
                resolve("promise1");
                // 异步操作失败后的处理函数
                reject("error1")
            },2000)
        });
        return p
    }
    function  run2() {
        var p= new Promise(function (resolve,reject) {
            setTimeout(function () {
                console.log("no2");
                resolve("promise2")
            },2000)
        });
        return p
    }
    function  run3() {
        var p= new Promise(function (resolve,reject) {
            setTimeout(function () {
                console.log("no3");
                resolve("promise3")
            },2000)
        });
        return p
    }
    run1().then(function (data) {
        console.log(data);
        return run2();
    }).then(function (data) {
        console.log(data)
        return run3();
    }).then(function (data) {
        console.log(data)
    });

    结果:

     no1
     promise1
     no2
     promise2
     no3
     promise3

    3: resolve  reject

    run1().then(function (data) {
        // 指定promise异步处理成功后的函数
        console.log(data)
    }).catch(function (data) {
        // 指定promise异步处理失败后的函数
        console.log(data)
    });

    我们知道Promise对象除了then方法,还有一个catch方法,它是做什么用的呢?其实它和then的第二个参数一样,用来指定reject的回调

    还有一个作用就是

    执行resolve的回调(也就是上面then中的第一个参数)时,如果抛出异常了(代码出错了),那么并不会报错卡死js,而是会进到这个catch方法中。

    4: promise.all()

    // Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
    Promise.all([run1(),run2(),run3()]).then(function (result) {
        console.log(result);
    });
    // 有了all,你就可以并行执行多个异步操作,并且在一个回调中处理所有的返回数据
  • 相关阅读:
    POJ 1113--Wall(计算凸包)
    博弈论笔记--06--纳什均衡之约会游戏与古诺模型
    atan和atan2反正切计算
    POJ 1410--Intersection(判断线段和矩形相交)
    FirstBird--项目流程
    POJ 2653--Pick-up sticks(判断线段相交)
    POJ 1066--Treasure Hunt(判断线段相交)
    POJ 2398--Toy Storage(叉积判断,二分找点,点排序)
    Jetty数据同步使用
    Linux小知识(1): bash中执行数据库的相关操作
  • 原文地址:https://www.cnblogs.com/joesbell/p/7381734.html
Copyright © 2020-2023  润新知