我瘋了這個代碼。我嘗試了所有我能想到的事情,而且我知道的是承諾相關的......但我無法得到它的工作!可能,容易與ES6承諾錯誤
原代碼是不如一個我分享那樣簡單,但是這是問題的核心TE:
- 讓我們有兩個填充的數組和兩個空數組。
- 然後'crearMazo'必須運行一個填充數組的循環,在我的mongodb(mongoose)上搜索這些字符串,並將結果_id推到其中一個空數組上。
嗯,它不起作用。 最後一個console.log顯示一個空數組,即使循環內的console.log確實打印了該數組。
我知道......我錯了(顯然)做的承諾......但我找不到在哪裏:(
var cartas = ['Lorem', 'Lorem2', 'Lorem3', 'Lorem4', 'Lorem5', 'Lorem6', 'Lorem7', 'Lorem8'];
var cartas2 = ['Lorem', '2Lorem', '3Lorem', '4Lorem', '5Lorem', '6Lorem', '7Lorem', '8Lorem'];
var newMazo = [];
var newMazo2 = [];
let crearMazo = function (c,m) {
return new Promise((resolve, reject) => {
setTimeout(() => {
for(var i in c){
Card.findOne({'nombre': c[i]}, '_id').then(carta => {
m.push(carta._id);
});
}
resolve(m);
}, 0);
});
};
crearMazo(cartas,newMazo)
.then(crearMazo(cartas2,newMazo2))
.then(() => {
console.log('mazo: '+ newMazo);
console.log('mazo: '+ newMazo2);
});
我想第二個'console.log()'應該打印'newMazo2'而不是'newMazo',對吧? – charliebrownie