【发布时间】:2018-05-05 00:52:09
【问题描述】:
我可以从第一个承诺中访问变量“savedCards”,它有一些价值。在第二个承诺中,它是未定义的,但变量“eCard”具有价值。请解释一下为什么?
saveCard(eCard: IEcards) {
var savedCards: IEcards[] = [];
this.storage.get("key").then((value) => {
if (value.saves == undefined) {
var saves = savedCards;
value.saves = saves;
}
savedCards = value.saveCard; // have value and can be accessed
console.log(savedCards);
}).then((data) => {
console.log(savedCards); // savedCards is undefined but eCard.id has value
this.globalProvider.IsCardExist(eCard.id, savedCards).then((data) => {
if (!data.response) {
this.globalProvider.AddEcardToStorage("saves", eCard);
}
});
});
}
【问题讨论】:
-
可能不是问题的原因,但我应该指出,第一个 promise 的 'then' 函数没有返回任何内容,因此下一个 'then' 不会收到输入论据
-
@MátéSafranka 但我没有使用数据对象,而且电子贺卡也有价值。
-
我不知道你在问什么,但也许这会有所帮助:How to chain and share prior results with promises。
-
savedCards应该是未定义的并且eCard.id应该有一个值是完全合理的。代码中没有可观察到的东西会阻止这两种数据状态中的任何一种。
标签: javascript promise es6-promise