在JavaScript中使用嵌套的foreach绑定它

时间:2016-08-11 02:39:18

标签: javascript foreach this

我有几个方法,比如receiveMessage,收到......在JS下面的代码片段中的foreach循环之外。如何将this关键字与这两个关键字绑定在一起。我正在使用STRICT模式。

data.entry.forEach(function(pageEntry) {
            let pageID = pageEntry.id;
            let timeOfEvent = pageEntry.time;

            // Iterate over each messaging event

            pageEntry.messaging.forEach(function(messagingEvent) {
                if (messagingEvent.optin) {
                    this.receivedAuthentication(messagingEvent);
                } else if (messagingEvent.message) {
                    this.receivedMessage(messagingEvent);
                } else if (messagingEvent.delivery) {
                    this.receivedDeliveryConfirmation(messagingEvent);
                } else if (messagingEvent.postback) {
                    this.receivedPostback(messagingEvent);
                } else if (messagingEvent.read) {
                    this.receivedMessageRead(messagingEvent);
                } else if (messagingEvent.account_linking) {
                    this.receivedAccountLink(messagingEvent);
                } else {
                    this.log("Webhook received unknown messagingEvent: ", messagingEvent);
                }
            }, this);
        }, this);

我一直收到一个错误,说不能调用未定义的receiveMessage。我知道this关键字需要绑定。如何在嵌套的foreach循环中执行此操作。我希望外部上下文绑定到两个foreach循环。有什么建议吗?

[更新1] 代码不起作用。让我来说明我想要实现的目标,有人可以帮助我

我有一个包含多个功能的文件。他们在内部互相打电话,我正在使用STRICT MODE。它看起来像这样

'use strict';

module.exports = function(){
    function call(){
        small();
        console.log('call');
    }
    function small(){
        console.log('small');
    }

}

我有另一个文件,主要想要从第一个文件提供函数作为回调。基本上我想这样做

'use strict';

let messenger = require('./export-it.js');
console.log(messenger.call());

这应该打印小''并且打电话给'这该怎么做?在严格模式下,需要内部函数调用和此关键字绑定。

更新2

这完美无缺,但代码看起来并不干净:(

'use strict';

function call(){
    small();
    console.log('call');
}
function small(){
    console.log('small');
}

module.exports.call = call;
module.exports.small = small;

必须有办法将所有这些功能集中在一个屋檐下,否?

0 个答案:

没有答案