簡體   English   中英

如何更改promise內部的外部變量的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM