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

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

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

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

九州編程 2019-03-25 10:30:29
代碼如下:function item(args){    var posttitle;    let p = new Promise((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);     })    return value;    //如何return .then的value值?}需要大家的幫助!~T-T...非常感謝!~
查看完整描述

2 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

Promise 中處理的是一個異步調用,異步調用是非阻塞式的,也就是說,你在調用的時候并不知道它什么時候結束,當然也就不會等到他返回一個有效數據之后再進行下一步處理。但是——

異步調用的內容是知道什么時候結束的,它結束之后可以發出通知。我們一般使用回調函數來獲得這個通知,比如

function item(args, callback) {     // <-- 注意 callback 傳入一個處理函數
    // ....
    p.then((value) => {        console.log(value);
        callback(value);        // <-- 取得值之后通過回調進行下一步處理
    });
}

item(blabla,
    (value) => console.log(`got ${value}`)  // <-- 這就是上面提到的 callback);

不過除非特殊情況,一般不應該把 Promise 處理成回調,而應該直接返回 Promise,以便后續進行基于 Promise 規范的處理,比如

function item(args) {       // <-- 它返回一個 Promise
    // ....
    return p.then((value) => {        console.log(value);        return value;
    });
}// 繼續按 Promise 規劃在外面進行處理item.then(value => console.log(`got ${value}`));

這樣寫起來似乎不是很符合常見的同步代碼編寫習慣,那可以用 async/await,具體參考閱讀:


查看完整回答
反對 回復 2019-03-25
?
元芳怎么了

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

嗯,我想說的是不能直接在then里面用嗎?

function item(){    return new Promise(resolve => {
            resolve('aaaa')
        }
    )
}

item().then(value=> {    console.log(value);
})

或者是你直接用個延時去???


查看完整回答
反對 回復 2019-03-25
  • 2 回答
  • 0 關注
  • 532 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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