国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

AngularJS中處理多個(gè)promise的方式

2019-11-20 10:38:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在使用AngularJS中處理promise的時(shí)候,有時(shí)會(huì)碰到需要處理多個(gè)promise的情況。

最簡(jiǎn)單的處理就是每個(gè)promise都then。如下:

var app = angular.module("app",[]);app.controller("AppCtrl", function($q. $timeout){var one = $q.defer();var two = $q.defer();var three = $q.defer();$timeout(function(){one.resolve("one done");}, Math.random() * 1000)$timeout(function(){two.resolve("two done");}, Math.random() * 1000) $timeout(function(){three.resolve("three done");}, Math.random() * 1000) functioin success(data){console.log(data);}one.promise.then(success);two.promise.then(success);three.promise.then(success);})

有沒(méi)有更好的方式?

$q.all方法可以接受promise的一個(gè)數(shù)組,按如下調(diào)用:

var all = $q.all([one.promise, two.promise, three.promise]);all.then(success);

什么是promise?

promise是一種用異步的方式處理值的方法,promise是對(duì)象,代表了一個(gè)函數(shù)最終可能的返回值或者拋出的異常,在與遠(yuǎn)程對(duì)象打交道時(shí)我們可以把他看作是遠(yuǎn)程對(duì)象的一個(gè)代理。 如果說(shuō)是promise也是異步處理方式的一種,那么我們會(huì)想起它和XHR和$.ajax有啥區(qū)別呢?

習(xí)慣上js使用閉包或者回調(diào)來(lái)相應(yīng)非同步返回的數(shù)據(jù),比如頁(yè)面加載之后的XHR請(qǐng)求。我們可以跟數(shù)據(jù)進(jìn)行正常交互,就好像它已經(jīng)返回了一樣,而不需要依賴回調(diào)函數(shù)的觸發(fā)。

那么ng提出的promise是為了解決什么問(wèn)題呢? 回調(diào)已經(jīng)被使用了很長(zhǎng)時(shí)間,通常如果有回調(diào)依賴其他還回調(diào)時(shí)將會(huì)時(shí)調(diào)試變得非常艱難,每一步調(diào)用之后都需要顯示處理錯(cuò)誤。與之不同的是promise提供了另外一個(gè)抽象:這些函數(shù)返回promise對(duì)象。

為什么使用promise

使用了promise的收獲之一是逃脫了回調(diào)的固定思維邏輯。promise讓異步處理的機(jī)制看上去更像是同步,基于同步函數(shù)我們可以按照預(yù)期來(lái)捕獲返回值和異常值。可以在程序中的任何時(shí)刻捕捉錯(cuò)誤,并且繞過(guò)依賴于程序異常的后續(xù)代碼,我們不需要思考這個(gè)同步帶來(lái)的好處。因此使用promise的目的是:獲取功能組合和錯(cuò)誤冒泡能力的同時(shí),保持代碼異步運(yùn)行的能力。

promise是頭等對(duì)象,自帶了一些約定。

• 只有一個(gè)resolve或者reject會(huì)被調(diào)用到。

• 如果promise被執(zhí)行或者被拒絕了,依賴于他們的處理程序仍然會(huì)被調(diào)用。

• 處理程序總是會(huì)被異步調(diào)用。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 威海市| 泸溪县| 乌什县| 临沧市| 仁寿县| 定襄县| 汕头市| 西充县| 石台县| 汝阳县| 江北区| 濉溪县| 成武县| 盐源县| 炎陵县| 肥西县| 若羌县| 喀喇| 新蔡县| 霍山县| 奇台县| 克山县| 白朗县| 东莞市| 临夏县| 台山市| 名山县| 大化| 泰顺县| 古蔺县| 噶尔县| 革吉县| 汶川县| 雷州市| 郓城县| 奈曼旗| 股票| 汝州市| 修文县| 阜新市| 衡阳县|