亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

寫后端的來看Promise,暈菜了

寫后端的來看Promise,暈菜了

函數式編程 2019-05-24 10:15:54
請問下面的樣例代碼中,resolve,reject這倆函數的定義在哪?newPromise(function(resolve,reject){log('startnewPromise...');vartimeOut=Math.random()*2;log('settimeoutto:'+timeOut+'seconds.');setTimeout(function(){if(timeOut
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

首先你得知道,javascript函數中的參數可以是一個函數,比如:
functiona(arg){
console.log(arg)
}
functionb(fn){
fn('a');
}
b(a);//打印a
另外,javascript中的函數不一定是定義的,可能是生成的,比如:
functiongetfn(arg){
returnfunction(){
console.log(arg);
}
}
vargeta=getfn('a');
geta();//打印a
再來看你的問題
newPromise(function(resolve,reject){
//....
})
這樣理解Promise的構造函數需要傳一個參數fn,這個參數類型必須是'function'構造函數會執行這個fn,并傳兩個參數給fn(a,b),這兩個參數的類型也是'function'用代碼理解大概是這個樣子:
classPromise{
constructor(fn){
this.init()
varresolve=this.get_resolve();//function
varreject=this.get_reject();//function
fn(resolve,reject);
}
...
}
最后回答你的問題:resolve,reject是在Promise實例化時在構造函數中生成的。。
                            
查看完整回答
反對 回復 2019-05-24
  • 2 回答
  • 0 關注
  • 518 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號