zoukankan      html  css  js  c++  java
  • Javascript Promise对象学习

    ES6中的Promise对象

    var p = new Promise(function(resolve, reject){
        window.setTimeout(function(){
            console.log("1",1);
            resolve(1);
        },10);
    });
    p.then(function(a){
        return new Promise(function(resolve,reject){
            window.setTimeout(function(){
                console.log("2",a+1);
                resolve(a + 1);
            },10);
        });
    }).then(function(a){
        return new Promise(function(resolve,reject){
            window.setTimeout(function(){
                console.log("3",a+1);
                resolve(a + 1);
            },10);
        });
    }).then((a)=>new Promise((resolve,reject)=>{
        window.setTimeout(function(){
            console.log("52222",a+1);
            resolve(a + 1);
        },10);
    }));
    

      

    for循环中的ajax请求依次执行,而不是无序执行。

    (function () {
    
    
        var ajax = function(callback){
            window.setTimeout(function(){
                callback(new Date());
            },1000);
        };
    
        var promiseAjax = function(num){
            return function (pre){
                return new Promise(function (resolve, reject) {
                    ajax(function (d) {
                        console.log(num,d);
                        resolve(d);
                    });
                });
            }
        } ;
    
    
    
        var p = promiseAjax(-1)();
        for (var i = 0; i < 10; i++) {
            p = p.then(promiseAjax(i));
        }
    
    
    })();
    

      

    Angular中的$q对象

        var $q = {};
        var deferred = $q.defer();
        var promise = deferred.promise;
        promise.then(function(a){
            return a + "222"
        }).then(function(a){
            var deferred = $q.defer();
            window.setTimeout(function(){
                deferred.resolve("333");
            },100);
            return deferred.promise;
        });
        deferred.resolve("1111");
    

      

    var deferred = $q.defer()
    
    ...(and then from console inspection)...
    
    $q: Object {defer: function, reject: function, when: function, all: function}
    
    deferred: Object {resolve: function, reject: function, notify: function, promise: Object}
    
    deferred.promise: Object {then: function, catch: function, finally: function}
    
    $q.reject(reason) returns a rejected promise with the reason passed as argument and defered. Reject rejects an existent defered whether its process has finished or not.
    

      

    try、catch、throw和then、catch、reject

  • 相关阅读:
    单调递增的数字
    合并K个升序链表
    ISO 8 自适应cell
    动态计算UITableViewCell高度
    APP上传
    多线程 GCD队列组
    多线程 线程之间的通信
    多线程 GCD
    多线程 线程同步问题
    多线程 线程的状态
  • 原文地址:https://www.cnblogs.com/lhp2012/p/5246881.html
Copyright © 2011-2022 走看看