如何JS绑定到外部Cordova回调函数

时间:2016-08-24 23:40:10

标签: javascript callback bind

虽然这样可行,但打印i从0到9

for (var i=0; i < 10; i++ {

    function myFunction (callback) {
        setTimeout(function () {
            callback('Answering your phone call');
        }, 10000);
    }

    myFunction(function (message) {
        console.log("i = " + this.i + " , message = " + message);
    }.bind({i: i}));
}

这不起作用,并将i打印为10,10,10,... 10(10次)

for (var i=0; i < 10; i++ {

    // There is an externalFunction, which is a Cordova call, that does call the callBack function with a message.

    externalFunction(function (message) {
        console.log("i = " + this.i + " , message = " + message);
    }.bind({i: i}));
}

我做错了什么? 我无法控制externalFunction,并且我希望在callBack返回时保留调用#。

我尝试过各种版本的闭包,绑定并无法使其工作。

1 个答案:

答案 0 :(得分:0)

@Niles用他的代码笔正确回答和演示,外部函数实际上保留了绑定值。

但是,经过一小时的调试后,了解到Cordova层在创建单独的运行时会话时会覆盖'this'值,并且最终会调用回调,所使用的值就是值。< / p>