加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

dojo异步编程之dojo/promise/all模块(dojo/DeferredList替代者

发布时间:2020-12-16 21:36:54 所属栏目:百科 来源:网络整理
导读:Email:longsu2010 at yeah dot net 之前写了篇博客“ http://blog.csdn.net/tt361/article/details/8924918”,写的是dojo的异步编程(dojo/Deferred模块),本篇博客算是一个补充,写写必须两个Deferred对象都resolve时才调用某函数该怎么做。 可以通过dojo/
Email:longsu2010 at yeah dot net
之前写了篇博客“ http://blog.csdn.net/tt361/article/details/8924918”,写的是dojo的异步编程(dojo/Deferred模块),本篇博客算是一个补充,写写必须两个Deferred对象都resolve时才调用某函数该怎么做。
可以通过dojo/promise/all模块完成,先看例子。
require(["dojo/promise/all","dojo/Deferred"],function(all,Deferred){
					
	function defer1(){
		var deferred = new Deferred();
		setTimeout(function(){
			deferred.resolve("defer1");
			// deferred.reject("defer1");
		},2000);
		return deferred;
	}

	function defer2(){
		var deferred = new Deferred();
		setTimeout(function(){
			deferred.resolve("defer2");
		},200);
		return deferred;
	}

	all({
  	   	defer1 : defer1(),defer2 : defer2()
        }).then(function(rs){
      	        console.log(rs.defer1,rs.defer2);
        },function(rs){
        	console.log(rs)
        });
});
非常的简单,all模块(一个函数)可以接收一个数组或者一个对象作为参数,数组的每个元素(对象的属性)需要是一个Deferred对象,当所有的Deferred对象都resolve时调用第一个回调函数,其中一个失败调用第二个回调函数。 第一个回到函数的参数是数组或者对象(视all的参数是数组还是对象而定);第二回调函数的参数是第一个失败Deferred对象的信息。 另外dojo/promise/first与all用法类似,不同的是前者为当有一个Deferred对象完成时(resolve或者reject)就调用回调函数,first随即完成。 dojo/DeferredList完成的功能与all相同但DeferredList是deprecated,不建议使用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读