第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

es6中一個function內(nèi)的循環(huán),循環(huán)里有異步,怎么讓最終的結(jié)果被return

es6中一個function內(nèi)的循環(huán),循環(huán)里有異步,怎么讓最終的結(jié)果被return

蝴蝶刀刀 2019-03-15 18:15:42
問題描述es6中一個function內(nèi)的循環(huán),循環(huán)里有異步,怎么讓最終的結(jié)果被return,在循環(huán)外return不是想要的結(jié)果問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法用vue2開發(fā)的web項(xiàng)目,Promise和async/await都有個問題就是循環(huán)內(nèi)得到的是promise對象,無法在循環(huán)外return想要的結(jié)果相關(guān)代碼// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)async _normalizeSongs(list) {        if(!list) {            return        }        let rest = []        let index = 1        console.log(list)        for(let i=0;i<list.length;i++) {            if(list[i].songid && list[i].albummid) {                let res = await getSongVkey(list[i].songmid)                if(res.code === ERR_OK) {                    const filename = res.req_0.data.midurlinfo[0].filename                    const vkey = res.req_0.data.midurlinfo[0].vkey                    const newSong = createSong(list[i], filename, vkey)                    // console.log(newSong)                    rest.push(newSong)                }            }            index++        }        return rest   }         _genResult(data) {        let rest = []        if(data.zhida && data.zhida.singername) {            rest.push({...data.zhida,...{type: TYPE_SINGER}})        }        if(data.song) {            let promise = this._normalizeSongs(data.song.list)            promise.then((res) => {                console.log(res)               /* rest = rest.concat(res)                this.result = rest*/                rest = rest.concat(this._normalizeSongs(data.song.list))            })        }        console.log(rest)        return rest    }你期待的結(jié)果是什么?實(shí)際看到的錯誤信息又是什么?_genResult這個函數(shù)里promise里的res怎么return出這個函數(shù),路過的道友們給看看,萬分感謝
查看完整描述

2 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個贊

這個函數(shù)的第二個參數(shù)為回調(diào)函數(shù)(調(diào)用的時候?qū)懩涿瘮?shù)就行了,手機(jī)回答沒辦法給你寫代碼)


這個回調(diào)函數(shù)的參數(shù)就是你要return的對象 。


調(diào)用大概是這樣 gen(data,(res)=>{console.log(res)})


函數(shù) 在修改后面加個cb&&cb(rest)


-----補(bǔ)充


函數(shù)修改


 _genResult(data,cb) {

        let rest = []

        if(data.zhida && data.zhida.singername) {

            rest.push({...data.zhida,...{type: TYPE_SINGER}})

        }

        if(data.song) {

            let promise = this._normalizeSongs(data.song.list)

            promise.then((res) => {

                console.log(res)

               /* rest = rest.concat(res)

                this.result = rest*/

                rest = rest.concat(this._normalizeSongs(data.song.list))

                cb&&cb(rest);

            })


        }

    }

    

    //調(diào)用

    this._genResult(data, (rest) => {

        console.log(rest);//

        this._genResult = rest; //建議你換個名字來接收這個函數(shù)

     });


查看完整回答
反對 回復(fù) 2019-04-14
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個贊

Promise.all() 了解一下。

const results = Promise.all(list.map(item => getSongVkey(item.songmid)))// results 是一個數(shù)組

注: 你的 getSongVkey 方法應(yīng)該返回的是一個 Promise對象.
參考如下:

MDN

let p1 = new Promise((resolve, reject) => {

  resolve('成功了')

})


let p2 = new Promise((resolve, reject) => {

  resolve('success')

})


Promise.all([p1, p2]).then(results => {

  console.log(results)

}).catch(error => {

  console.log(error)

})


查看完整回答
反對 回復(fù) 2019-04-14
  • 2 回答
  • 0 關(guān)注
  • 523 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號