【发布时间】:2020-03-17 07:05:16
【问题描述】:
我的代码有问题。它在没有完成第一份工作的情况下跳转到第二个.then 部分。之后,它会回到第一个承诺,但永远不会在第二个 .then 内执行代码
Promise.all(jobs).then((values) => {
console.log("First!")
values.forEach(function(vals) {
vals.forEach(function(doc) {
if (doc.properties.location_i.toString() == request.body.id) {
jobs_do.push(dbo.collection("zones").find({
"geometry": {
$geoIntersects: {
$geometry: {
type: "Point",
coordinates: [
docs[values.indexOf(vals)].geometry_do.coordinates[0],
docs[values.indexOf(vals)].geometry_do.coordinates[1]
]
}
}
}
}))
}
})
})
}).then(function() {
console.log("Second!")
Promise.all(jobs_do).then((values) => {
values.forEach(function(vals) {
vals.forEach(function(doc) {
console.log(doc.properties.objectid);
});
})
});
});
它满足jobs_do数组但Promise.all(jobs_do).then((values))在jobs_do为空时执行一次。
控制台日志是:
First!
Second!
【问题讨论】:
-
所以你说
jobs_do在第二个then是空的?