欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

AngularJS中處理多個promise的方式

 更新時間:2016年02月02日 09:16:55   作者:Darren Ji  
promise是一種用異步的方式處理值的方法,promise是對象,代表了一個函數(shù)最終可能的返回值或者拋出的異常,在與遠(yuǎn)程對象打交道時我們可以把他看作是遠(yuǎn)程對象的一個代理,通過本文給大家介紹AngularJS中處理多個promise的方式及什么是promise,需要的朋友參考下

在使用AngularJS中處理promise的時候,有時會碰到需要處理多個promise的情況。

最簡單的處理就是每個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);
})

有沒有更好的方式?

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

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

什么是promise?

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

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

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

為什么使用promise

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

promise是頭等對象,自帶了一些約定。

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

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

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

相關(guān)文章

  • AngulaJS路由 ui-router 傳參實例

    AngulaJS路由 ui-router 傳參實例

    本篇文章主要介紹了AngulaJS路由 ui-router 傳參實例 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Angular性能優(yōu)化之第三方組件和懶加載技術(shù)

    Angular性能優(yōu)化之第三方組件和懶加載技術(shù)

    這篇文章主要介紹了Angular性能優(yōu)化之第三方組件和懶加載技術(shù),對性能優(yōu)化感興趣的同學(xué),可以參考下
    2021-05-05
  • AngularJS入門教程之靜態(tài)模板詳解

    AngularJS入門教程之靜態(tài)模板詳解

    本文主要介紹AngularJS 靜態(tài)模板,這里整理了相關(guān)的基礎(chǔ)資料,會幫助大家學(xué)習(xí)基礎(chǔ)的AngularJS的基礎(chǔ)知識,有需要的小伙伴可以參考下
    2016-08-08
  • 在AngularJS中使用AJAX的方法

    在AngularJS中使用AJAX的方法

    這篇文章主要介紹了在AngularJS中使用AJAX的方法,示例非常簡單,并不能完全體現(xiàn)出AJAX動態(tài)刷新的強(qiáng)大功能,需要的朋友可以參考下
    2015-06-06
  • AngularJS基礎(chǔ) ng-hide 指令用法及示例代碼

    AngularJS基礎(chǔ) ng-hide 指令用法及示例代碼

    本文主要介紹AngularJS ng-hide 指令,這里整理了ng-hide指令的基礎(chǔ)資料,并附實例代碼,有興趣的小伙伴參考下
    2016-08-08
  • Angular 組件之間的交互的示例代碼

    Angular 組件之間的交互的示例代碼

    這篇文章主要介紹了Angular 組件之間的交互的示例代碼,根據(jù)數(shù)據(jù)的傳遞方向,分為父組件向子組件傳遞、子組件向父組件傳遞及通過服務(wù)傳遞三種交互方法。非常具有實用價值,需要的朋友可以參考下
    2018-03-03
  • 詳解使用angular框架離線你的應(yīng)用(pwa指南)

    詳解使用angular框架離線你的應(yīng)用(pwa指南)

    這篇文章主要介紹了詳解使用angular框架離線你的應(yīng)用(pwa指南),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Angular實現(xiàn)form自動布局

    Angular實現(xiàn)form自動布局

    這篇文章主要介紹了Angular實現(xiàn)form自動布局的相關(guān)資料,以代碼片段的形式分析了Angular實現(xiàn)form自動布局的實現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-01-01
  • AngularJS解決ng-if中的ng-model值無效的問題

    AngularJS解決ng-if中的ng-model值無效的問題

    本篇文章主要介紹了AngularJS解決ng-if中的ng-model值無效的問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • AngularJS使用angular.bootstrap完成模塊手動加載的方法分析

    AngularJS使用angular.bootstrap完成模塊手動加載的方法分析

    這篇文章主要介紹了AngularJS使用angular.bootstrap完成模塊手動加載的方法,結(jié)合實例形式分析了angular.bootstrap函數(shù)手動加載模塊的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01

最新評論