Promise是什么藻雪? 有哪些參數? 如何使用狸吞?

名詞約定

一般來講勉耀,有以下的名詞約定:

  promise(首字母小寫)對象指的是“Promise實例對象”
  Promise首字母大寫且單數形式,表示“Promise構造函數”
  Promises首字母大寫且復數形式蹋偏,用于指代“Promises規(guī)范”

那么我們來扯一會

去年6月份便斥, ES2015正式發(fā)布(也就是ES6,ES6是它的乳名)威始,其中Promise被列為正式規(guī)范枢纠。作為ES6中最重要的特性之一,我們有必要掌握并理解透徹黎棠。本文將由淺到深晋渺,講解Promise的基本概念與使用方法。

promise是什么脓斩?

1木西、主要用于異步計算
2、可以將異步操作隊列化随静,按照期望的順序執(zhí)行八千,返回符合預期的結果
3、可以在對象之間傳遞和操作promise挪挤,幫助我們處理隊列

為什么會有promise叼丑?

同步:假設你去了一家飯店,找個位置扛门,叫來服務員鸠信,這個時候服務員對你說,對不起我是“同步”服務員论寨,我要服務完這張桌子才能招呼你星立。那桌客人明明已經吃上了,你只是想要個菜單葬凳,這么小的動作绰垂,服務員卻要你等到別人的一個大動作完成之后,才能再來招呼你火焰,這個便是同步的問題:也就是“順序交付的工作1234劲装,必須按照1234的順序完成”。

異步:則是將耗時很長的A交付的工作交給系統(tǒng)之后,就去繼續(xù)做B交付的工作占业,绒怨。等到系統(tǒng)完成了前面的工作之后,再通過回調或者事件谦疾,繼續(xù)做A剩下的工作南蹂。

AB工作的完成順序,和交付他們的時間順序無關念恍,所以叫“異步”六剥。


new
Promise(
function(resolve, reject){
// 一段耗時的異步操作
resolve('成功')// 數據處理完成
// reject('失敗') // 數據處理出錯
  }
).then(
(res) =>{console.log(res)},// 成功
(err) =>{console.log(err)}// 失敗
)

promise.all的用法

    var p1=Promise(function(resolve,reject){
               setTimeout(function(){
                   resolve('p1完成')
               },1000)
           })
           var p2=Promise(function(resolve,reject){
               setTimeout(function(){
                   resolve('p1完成')
               },2000)
           })
           var p3=Promise(function(resolve,reject){
               setTimeout(function(){
                   resolve('p1完成')
               },3000)
           })
           Promise.all([p3,p2,p1]).then(function(res){
               console.log(res);
               //p3,p2,p1是我們調用的順序 ["p3完成","p2完成","p1完成"]是我們返回的結果
               //可以看得出來,我們控制了3個異步請求的返回順序
           })

總結 :promise.all的使用場景就是可以同時處理多個異步請求并控制他們返回【結果的順序】
注意:promise.all中的任何一個請求峰伙,都將不會有返回結果

.then()

1疗疟、接收兩個函數作為參數,分別代表fulfilled(成功)和rejected(失斖ァ)
2秃嗜、.then()返回一個新的Promise實例,所以它可以鏈式調用
3顿膨、當前面的Promise狀態(tài)改變時,.then()根據其最終狀態(tài)叽赊,選擇特定的狀態(tài)響應函數執(zhí)行
4恋沃、狀態(tài)響應函數可以返回新的promise,或其他值必指,不返回值也可以我們可以認為它返回了一個null囊咏;
5、如果返回新的promise塔橡,那么下一級.then()會在新的promise狀態(tài)改變之后執(zhí)行
6梅割、如果返回其他任何值,則會立即執(zhí)行下一級.then()

.then()里面有.then()的情況

1葛家、因為.then()返回的還是Promise實例
2户辞、會等里面的then()執(zhí)行完,再執(zhí)行外面的

promise結合await asyan封裝接口API

var token = JSON.parse(localStorage.getItem('userInfo')).remember_token
function http(url, type, data = '') {
 var p =  new Promise((v, b) => {
       $.ajax({
           headers: {
               Authorization: 'Bearer ' + token
           },
           url,
           type,
           data,
           success: (res) => {
               v(res)
           },error:(er)=>{
               b(er)
           }
       })
   })
   return p
}

function getNav(){
   return http('http://***.**.**.***:**/api/menu/info','post')
}
function getList(pageNum,statues,nickname,mobile){
   return http(`http://***.**.**.***:**/api/user?page=${pageNum}&limit=10&status=${statues}&nickname=${nickname}&mobile=${mobile}&`,'get')
}

如何使用癞谒?

使用場景:promise封裝api接口
Promise進行異步操作
解決問題:1.回調多域問題2.多個并發(fā)請求
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末底燎,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子弹砚,更是在濱河造成了極大的恐慌双仍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桌吃,死亡現場離奇詭異朱沃,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門逗物,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搬卒,“玉大人,你說我怎么就攤上這事敬察⌒憔Γ” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵莲祸,是天一觀的道長蹂安。 經常有香客問我,道長锐帜,這世上最難降的妖魔是什么田盈? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮缴阎,結果婚禮上允瞧,老公的妹妹穿的比我還像新娘。我一直安慰自己蛮拔,他們只是感情好述暂,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著建炫,像睡著了一般畦韭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肛跌,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天艺配,我揣著相機與錄音,去河邊找鬼衍慎。 笑死转唉,一個胖子當著我的面吹牛,可吹牛的內容都是我干的稳捆。 我是一名探鬼主播赠法,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乔夯!你這毒婦竟也來了期虾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤驯嘱,失蹤者是張志新(化名)和其女友劉穎镶苞,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體鞠评,經...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡茂蚓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋涨。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡晾浴,死狀恐怖,靈堂內的尸體忽然破棺而出牍白,到底是詐尸還是另有隱情脊凰,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布茂腥,位于F島的核電站狸涌,受9級特大地震影響,放射性物質發(fā)生泄漏最岗。R本人自食惡果不足惜帕胆,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望般渡。 院中可真熱鬧懒豹,春花似錦、人聲如沸驯用。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝴乔。三九已至豹储,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淘这,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工巩剖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铝穷,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓佳魔,卻偏偏與公主長得像曙聂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鞠鲜,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容

  • 什么是同步坐漏,什么是異步 既然要說Promise,那么就要先介紹一下什么是同步,什么是異步赊琳,javascript中執(zhí)...
    阿桐隨記閱讀 944評論 0 6
  • 本文轉載至http://www.reibang.com/p/1b63a13c2701 promise是什么街夭? 1...
    莫名其妙的名字閱讀 117評論 0 0
  • Promise 是什么? 主要用于異步計算 可以間異步操作隊列化躏筏,按照期望得順序執(zhí)行板丽,返回符合預期得結果 可以在對...
    前端_周瑾閱讀 3,356評論 1 3
  • promise是什么? 1趁尼、主要用于異步計算 2埃碱、可以將異步操作隊列化,按照期望的順序執(zhí)行弱卡,返回符合預期的結果 3...
    師妹不叫思妹閱讀 771評論 0 0
  • promise是什么乃正? 1、主要用于異步計算 2婶博、可以將異步操作隊列化瓮具,按照期望的順序執(zhí)行,返回符合預期的結果 3...
    Koreyoshi丶閱讀 226評論 0 1