我很好奇我将某些东西绑定(bind)到 promise 的时机。
var that = this;
function p(){
var promise = new Promise(
function (yes, no) {
/* .... */
/* .... */
}).then(function (val) {
/* .... */
/* .... */
}.bind(this));
}.bind(this)
请问条件
that === this
总是返回 true,考虑到 promise 之外的范围是异步的,.then
可能会在生命周期的后期解决。
换句话说,this
是否与调用第一个函数时具有相同的值,或者它是否具有在 .then
中实际使用的值部分?
最佳答案
this
的值由调用方法中点左边的内容决定。如果您不调用对象的方法,则 this
将是全局的(浏览器中的窗口)。
在您的示例中,行var that = this
将that 的值设置为该全局变量window(或global)。所以在这种特定情况下,这将始终等于那个。然而,这是由于副作用,如果您使用不同的对象作为 this
,那么在
function (yes, no) {
/* .... */
/* .... */
}
这个!==那个
我做了一个 fiddle 作为例子 http://jsfiddle.net/metaf0x9/
关于javascript - promise 中绑定(bind)参数的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931998/