Promise概述
Promise對象是CommonJS工作組提出的一種規范,目的是為異步操作提供統一接口。
那么,什么是Promises?
首先,它是一個對象,也就是說與其他JavaScript對象的用法,沒有什么兩樣;其次,它起到代理作用(proxy),充當異步操作與回調函數之間的中介。它使得異步操作具備同步操作的接口,使得程序具備正常的同步運行的流程,回調函數不必再一層層嵌套。
簡單說,它的思想是,每一個異步任務立刻返回一個Promise對象,由于是立刻返回,所以可以采用同步操作的流程。這個Promises對象有一個then方法,允許指定回調函數,在異步任務完成后調用。
比如,異步操作f1返回一個Promise對象,它的回調函數f2寫法如下。
(new Promise(f1)).then(f2);
前言
Promise是JavaScript異步操作解決方案,最近看到項目里不少人用了Promise 的庫類,比如 bluebird、q 、jQuery.Deffered 等 polyfill promise 方式,使用的時候翻看長長的文檔,真心累覺不愛。
es5 發展到現在,node 在0.12版本就已經支持了promise, 在客戶端,大部分瀏覽器也支持了Promise, 如果要兼容低版本的瀏覽器,可以加上es5-shim等 polyfill promise。下面話不多說,來一起看看詳細的介紹:
用法
Promise 常用場景。
處理異步回調
多個異步函數同步處理
異步依賴異步回調
封裝統一的入口辦法或者錯誤處理
一、處理異步回調
Promise 的基本用法, 處理異步回調。
二、多個異步函數同步處理
有時候我們需要發送兩個ajax,希望他們能一起把數據返回,就可以采用下面的辦法。
三、異步依賴異步回調
有些場景是一個異步依賴另一個異步的返回值的,就可以采用下面的用法。
比如: 用一個訂單號異步取到訂單詳情,再用訂單詳情里的商品Id獲取到商品詳情。
四、封裝統一的入口辦法或者錯誤處理
錯誤處理
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com