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

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

.then的返回值如何被函數return?

.then的返回值如何被函數return?

慕桂英546537 2019-05-08 17:03:15
代碼如下:functionitem(args){varposttitle;letp=newPromise((resolve,reject)=>{hexo.extend.filter.register('after_post_render',function(post){posttitle=post.title;resolve(posttitle);//這里的post是文章的數據,而post.title則是文章的標題...});})p.then((value)=>{console.log(value);})returnvalue;//如何return.then的value值?}需要大家的幫助!~T-T...非常感謝!~
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

Promise中處理的是一個異步調用,異步調用是非阻塞式的,也就是說,你在調用的時候并不知道它什么時候結束,當然也就不會等到他返回一個有效數據之后再進行下一步處理。但是——
異步調用的內容是知道什么時候結束的,它結束之后可以發出通知。我們一般使用回調函數來獲得這個通知,比如
functionitem(args,callback){//<--注意callback傳入一個處理函數
//....
p.then((value)=>{
console.log(value);
callback(value);//<--取得值之后通過回調進行下一步處理
});
}
item(blabla,
(value)=>console.log(`got${value}`)//<--這就是上面提到的callback
);
不過除非特殊情況,一般不應該把Promise處理成回調,而應該直接返回Promise,以便后續進行基于Promise規范的處理,比如
functionitem(args){//<--它返回一個Promise
//....
returnp.then((value)=>{
console.log(value);
returnvalue;
});
}
//繼續按Promise規劃在外面進行處理
item.then(value=>console.log(`got${value}`));
這樣寫起來似乎不是很符合常見的同步代碼編寫習慣,那可以用async/await,具體參考閱讀:
理解JavaScript的async/await
                            
查看完整回答
反對 回復 2019-05-08
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

嗯,我想說的是不能直接在then里面用嗎?
functionitem(){
returnnewPromise(resolve=>{
resolve('aaaa')
}
)
}
item().then(value=>{
console.log(value);
})
或者是你直接用個延時去???
                            
查看完整回答
反對 回復 2019-05-08
  • 2 回答
  • 0 關注
  • 505 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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