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'
		});
相關文章
相關標籤/搜索