Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将上下文传递到Javascript承诺中_Javascript_Es6 Promise - Fatal编程技术网

如何将上下文传递到Javascript承诺中

如何将上下文传递到Javascript承诺中,javascript,es6-promise,Javascript,Es6 Promise,我会第一个承认,我并不总是得到JS的承诺。所以,如果这是一个愚蠢的问题,我会提前道歉给定下面的代码,我需要在包含该函数的类中设置一个属性(即,我需要在fullfullment方法中调用“this”,并让它引用回该类) 我看到了一些与设置上下文相关的东西,但它们也需要闭包(()=>{…code..}),这在Internet Explorer中不太好用。我们可以在浏览器上痛恨我们想要的一切,但归根结底,这是一个在IE中工作的要求 所以我今天的问题是,我如何将对它的引用传递到下面的方法中 var re

我会第一个承认,我并不总是得到JS的承诺。所以,如果这是一个愚蠢的问题,我会提前道歉给定下面的代码,我需要在包含该函数的类中设置一个属性(即,我需要在fullfullment方法中调用“this”,并让它引用回该类)

我看到了一些与设置上下文相关的东西,但它们也需要闭包(()=>{…code..}),这在Internet Explorer中不太好用。我们可以在浏览器上痛恨我们想要的一切,但归根结底,这是一个在IE中工作的要求

所以我今天的问题是,我如何将对它的引用传递到下面的方法中

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中的闭包。使用承诺的事实也无关紧要。