为什么call和bind不会改变我的回调(Node.js)的“this”对象?

时间:2018-01-17 00:40:39

标签: javascript node.js

我有一个函数(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(),这也是我试过的,在我的回调中改变了这个对象。请帮我理解我做错了什么。

0 个答案:

没有答案