[英]How to change value of external variable inside promise?
var isError = false;
savedata.ingredients.split(',').reduce(function(p, ing) {
return p.then(function() {
return db.dog_ingredients.create({ content_name: ing, dogFoodId: dogId });
});
}, Promise.resolve()).catch(function(e) {
console.log(e);
isError = true; ///// I want to change value at this point
});
console.log(isError); // result false.
if(isError){
res.status(400).send('Error');
}else{
res.status(200).send('Good');
}
我認為外部變量沒有改變,因為諾言是異步完成的。 但我不知道如何解決這個問題。
我認為外部變量沒有改變,因為諾言是異步完成的。
是的 。
我不知道如何解決這個問題。
將要評估isError
變量的代碼放在promise回調中。 實際上,最好將其拆分為兩個then
回調 -一個用於實現,一個用於拒絕情況,這樣您根本就不需要該布爾變量。
savedata.ingredients.split(',').reduce(function(p, ing) {
return p.then(function() {
return db.dog_ingredients.create({ content_name: ing, dogFoodId: dogId });
});
}, Promise.resolve()).then(function() {
res.status(200).send('Good');
}, function(e) {
console.log(e);
res.status(400).send('Error');
});
該值已更改。 但在記錄其值時尚未更改。 沒有其他方法可以等待承諾被解決或拒絕以獲取更改的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.