JavaScript:访问回调内的变量

标签 javascript node.js

我正在尝试使用 NodeJS 中的开放图插件来获取藤蔓的预览图像。 OG 结果是正确的,但我无法从 og 回调中访问 result[i] - 变量未定义。如何在 OG 回调中访问 result[i]?

    Thing.find(function(err, result) {
        for (var i = 0; i < result.length; i++) {
            if (result[i].attachment) {
                if (result[i].attachment.embed_type == 'vine') {
                    og(result[i].attachment.embed_url, function(err, meta) {
                        result[i].attachment.preview_image = meta.image;
                        result[i].save();
                    });
                }
            }
        }
    });

最佳答案

你需要一个闭包,i不断变化,因为of是异步的

Thing.find(function(err, result) {
    for (var i = 0; i < result.length; i++) {
        if ( result[i].attachment &&
             result[i].attachment.embed_type == 'vine') 
        {
            (function(res) {
                og(res.attachment.embed_url, function(err, meta) {
                    res.attachment.preview_image = meta.image;
                    res.save();
                });
            }(result[i]));
        }
    }
});

关于JavaScript:访问回调内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29436354/

相关文章:

javascript - http.get 解析错误,代码 : 'HPE_UNEXPECTED_CONTENT_LENGTH'

node.js - 与 npm run 配合良好的静态构建的自动缓存清除?

javascript - 无法访问资源请求的回调函数内的变量

javascript - 'use strict' 和只读属性的奇怪行为

javascript - 为动态加载的 HTML 内容触发 Bootstrap JS 行为

JavaScript - 动画旋转算法

javascript - 使用 JS 或 Jquery 在整个 HTML 表中插入行(包括按钮)

javascript - 我的 ng-repeat 仅按字母顺序工作 |angularJS

javascript - React Js - 如何保持 bundle.min.js 小?

javascript - 为什么 Angularjs 不将 POST 发送到我的 Express 服务器?