• 29 promise


    promise
    	在JavaScript的世界中,所有代码都是单线程执行的。
    	由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现
    
    	Promise对象一定会执行函数(承诺)然后,根据结果是成功还是失败,在将来的某个时候调用then函数或catch函数
    		例子:
    			new Promise(test).then(function (result) {
    				console.log('成功:' + result);
    			}).catch(function (reason) {
    				console.log('失败:' + reason);
    			});
    	可见Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了
    
    	串行执行异步任务
    		job1.then(job2).then(job3).catch(handleError);
    
    	并行执行异步任务
    		var p1 = new Promise(function (resolve, reject)
    		setTimeout(resolve, 500, 'P1');
    		});
    		var p2 = new Promise(function (resolve, reject) {
    			setTimeout(resolve, 600, 'P2');
    		});
    		// 同时执行p1和p2,并在它们都完成后执行then:
    		Promise.all([p1, p2]).then(function (results) {
    			console.log(results); // 获得一个Array: ['P1', 'P2']
    		});
    		
    		
    		var p1 = new Promise(function (resolve, reject) {
    			setTimeout(resolve, 500, 'P1');
    		});
    		var p2 = new Promise(function (resolve, reject) {
    			setTimeout(resolve, 600, 'P2');
    		});
    		// 同时执行p1和p2,仅要1个完成后执行then:
    		Promise.race([p1, p2]).then(function (result) {
    			console.log(result); // 'P1'
    		});
    

      

  • 相关阅读:
    nyoj592 spiral grid
    ny788 又见Alice and Bob
    hdoj 1166 敌兵布阵 线段数和树状数组
    nyoj228 士兵杀敌(5)插线问线
    nyoj576 集齐卡片赢大奖(一)
    ny269 VF
    AC Again hdoj 1582 搜索
    nyoj123 士兵杀敌(四)树状数组 插线问点
    CRAVAT: Cancer-Related Analysis of VAriants Toolkit
    第二代无创胎儿基因组分析结果
  • 原文地址:https://www.cnblogs.com/xuanjian-91/p/10998589.html
Copyright © 2020-2023  润新知