Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

async/await与for循环遍历

$
0
0

遇到了在for循环中,使用await函数的情况,但是打断点调试后发现得到的还是Promise{pending},有考虑闭包的问题,使用了匿名函数带参数的写法,还是不能解决,每次单步调试的时候await函数那里会自动跳过,代码如下,请熟悉这方面的朋友给点意见,指明一个研究方向,谢谢。

var query = models.DuoBaoPlayer.find(q, '').sort('-_id').skip(skipFrom).limit(limit);

query.exec(function(err, doc) {
    var dataList = [];
    
	async function findOneDuobao(item) {
        let doc = await models.DuoBao.findOne({id:item.sid}, 'title startTime endTime luckys totalTime haveTime winner');		//mongoose
        return doc;
    }
        
    for (let i = 0; i < doc.length; i++) {
        dataList.push((async function (num) {
            let data1 = doc[num].toObject();			
            let data2 = await findOneDuobao(doc[num]);              //每次单步调试的时候都会自动跳过
            let data = Object.assign(data1, data2);
            return data;
        })(i));
    }
    
    let testDataList = dataList;                //return 两个 Promise { pending }
}

Viewing all articles
Browse latest Browse all 14821

Trending Articles