遇到了在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 }
}