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
  • 相关阅读:
    PAIRING WORKFLOW MANAGER 1.0 WITH SHAREPOINT 2013
    Education resources from Microsoft
    upgrade to sql server 2012
    ULSViewer sharepoint 2013 log viewer
    Top 10 Most Valuable Microsoft SharePoint 2010 Books
    讨论 Setsockopt选项
    使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
    Nagle's algorithm
    Nagle算法 TCP_NODELAY和TCP_CORK
    Design issues Sending small data segments over TCP with Winsock
  • 原文地址:https://www.cnblogs.com/swordyt/p/8342132.html
Copyright © 2011-2022 走看看