zoukankan      html  css  js  c++  java
  • Promise-js异步加载解决方案

    范例:

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

    resolve(data);函数的作用,将Promise对象的状态从“未完成”变成“成功”。

    reject(data);函数的作用是,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去,实际就是将“未完成”状态变成“失败”。

    范例:

        new Promise(function(resolve, reject) {
            setTimeout(function() {
                console.log("setTimeout", 2000);
                // resolve("执行完成");
                reject("执行出错");
            });
        }).then(function(data) {
            console.log(data);
        }, function(err) {
            console.log("错误", err);
        })

    then(function(data){});当接收到“成功消息时执行内部function;

    then(function(data){},function(err){});当接收到“成功”消息时执行第一个function,当接收到“失败”消息时执行第二个function。

    catch(reject);当出现“错误”时会一直往后续then传递,直到被catch捕获。

    注:每个then或catch都会生成新的promise实例,因此在每个then或catch中均需要发出resolve或reject消息,否则后续then或catch无法执行。

    Promise.all()

    var p = Promise.all([p1, p2, p3]);

    all()接受数组作为参数。p1,p2,p3都是Promise的实例对象,p要变成Resolved状态需要p1,p2,p3状态都是Resolved,如果p1,p2,p3至少有一个状态是Rejected,p的状态就变成Rejected。

    Promise.race()

    var p = new Promise( [p1,p2,p3] )

    只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。只获取最新发生状态变化的实例,后续丢弃。

    Proise.resolve()、Promise.reject()将现有对象转化为Promise对象,并将状态直接置为resolve或reject。范例:

    Promise.resolve('foo');//状态为resolve
    Promise.reject('foo');//状态为reject
  • 相关阅读:
    春季学期第十二周作业
    2019春第三次课程设计实验报告
    春季学期第十一周作业
    春季学期第十周作业
    春季学期第九周作业
    第五周总结 & 实验报告(三)
    第四周总结 & 实验报告(二)
    实验报告(一)&第三周总结
    第二周小结
    2019春总结
  • 原文地址:https://www.cnblogs.com/swordyt/p/8342132.html
Copyright © 2011-2022 走看看