如何将上下文传递到Javascript承诺中
我会第一个承认,我并不总是得到JS的承诺。所以,如果这是一个愚蠢的问题,我会提前道歉给定下面的代码,我需要在包含该函数的类中设置一个属性(即,我需要在fullfullment方法中调用“this”,并让它引用回该类) 我看到了一些与设置上下文相关的东西,但它们也需要闭包(()=>{…code..}),这在Internet Explorer中不太好用。我们可以在浏览器上痛恨我们想要的一切,但归根结底,这是一个在IE中工作的要求 所以我今天的问题是,我如何将对它的引用传递到下面的方法中如何将上下文传递到Javascript承诺中,javascript,es6-promise,Javascript,Es6 Promise,我会第一个承认,我并不总是得到JS的承诺。所以,如果这是一个愚蠢的问题,我会提前道歉给定下面的代码,我需要在包含该函数的类中设置一个属性(即,我需要在fullfullment方法中调用“this”,并让它引用回该类) 我看到了一些与设置上下文相关的东西,但它们也需要闭包(()=>{…code..}),这在Internet Explorer中不太好用。我们可以在浏览器上痛恨我们想要的一切,但归根结底,这是一个在IE中工作的要求 所以我今天的问题是,我如何将对它的引用传递到下面的方法中 var re
var result = this.saveChanges();
return Promise.resolve(result).then(function (value) {
return value.HasError === false;
}, function (value) {
if (value && value.responseJSON) {
return value.responseJSON.HasError === false;
}
return false;
});
非常感谢您的帮助。您可以声明一个引用此变量的变量,并在函数中使用该变量
var self = this;
var result = this.saveChanges();
return Promise.resolve(result).then(function (value) {
self.someProperty = true;
return value.HasError === false;
}, function (value) {
if (value && value.responseJSON) {
return value.responseJSON.HasError === false;
}
return false;
});
var self=this;
上面的promise
应该可以在提供的范围内访问。FWIW,您所说的“闭包”似乎是箭头函数语法,其中此
的工作方式确实不同。理论上,每个函数都是JavaScript中的闭包。使用承诺的事实也无关紧要。