Javascript变量继承问题

标签 javascript

我遇到了一些我希望可以工作的代码的问题。我在函数外部定义了一个变量,因此希望它可以通过继承被函数使用。我在函数外部控制台记录变量并在函数内部获取值和控制台日志并获得未定义。我在代码中使用注释来显示这些控制台日志。这里的任何帮助都会很棒。请参阅下面的代码片段。谢谢 Ant

for (var i = 0; i < parseResult.length; i++) {

    var destination = parseResult[i].attributes.userInfo;

    for (var i = 0; i < firebaseResult.length; i++) {

        if (firebaseResult[i].$id == parseResult[i].attributes.facebookID) {


            parseResult[i].attributes.convoID = firebaseResult[i].convoID;

            console.log(firebaseResult[i].time); // this returns the timestamp value

            parseResult[i].attributes.lastMessage = FirebaseAPI.getLastMessage(firebaseResult[i]).$loaded()
                .then(function(lastMessage) {

                    console.log(firebaseResult[i].time); // this returns undefined

                    if (!(0 in lastMessage)) {

                        var returnValue = 'Matched on ' + firebaseResult[i].time;
                    } else if (0 in lastMessage) {

                        var returnValue = lastMessage[0].message;
                    }

                    return returnValue;

                })
                .catch(function(error) {
                    console.log("Error:", error);
                })

        }
    }
}

最佳答案

使用循环迭代器访问异步回调中的东西通常是不可靠的,因为当回调返回时,i 会增加到让它退出循环的值。

修复方法是将它分配给您想要保存的任何变量。

console.log(firebaseResult[i].time); // this returns the timestamp value
var time = firebaseResult[i].time;

parseResult[i].attributes.lastMessage = FirebaseAPI.getLastMessage(firebaseResult[i]).$loaded()
   .then(function(lastMessage) {

       console.log(firebaseResult[i].time); // this returns undefined
       console.log(time);

关于Javascript变量继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133613/

相关文章:

javascript - 设置窗口标题栏的颜色 - electron.js

php - 解决多个 jQuery 文件之间的冲突

javascript - vue2.js 组件 vmodel 传递数据

javascript - 内容不显示时如何隐藏div

javascript - 单击时停止元素消失

javascript - Websocket 对象上的 InvalidStateError

javascript - PhoneGap 通知

javascript - 弗里斯比中的访问 header

javascript - 为什么 onDeviceReady 中的 if() 语句会循环?

javascript - jQuery 数据表 : Pass returned JSON to a variable