我有一个函数(f3
),它启动一系列事件,现在只调用f2
并传递其回调以在事件字符串结束时被调用。我的函数f1
是一个返回一个对象的承诺,它由承诺的.then()
接收,我已经通过console.log
验证了那个正在解决这个问题并触发的问题按正确的顺序。紧接着,我在附加.call(obj)
的同一范围内调用回调函数,但是当我记录回调中this
的值时,它返回{}
而不是值obj
。
// promise that defines object and passes it to next function
function f1() {
return new Promise((resolve, reject) => {
var obj = {
key1: "info",
key2: "more info",
etc: "and on and on..."
};
resolve(obj);
});
}
// calls f1 and calls callback of f3 with new data from then of f1
function f2(cb) {
f1().then((obj) => {
console.log(obj); // Outputs actual values in obj as defined in f1
cb.call(obj); // Successfully calls function, but "this" is not replaced with "obj" in callback
})
}
// overarching function that initiates chain of events
function f3(cb) {
f2(cb);
};
f3(() => {
console.log(this); // Outputs an empty object
});
我不能为我的生活弄清楚阻止.call()
或.bind()
,这也是我试过的,在我的回调中改变了这个对象。请帮我理解我做错了什么。