JS绑定会获取obj的状态还是保留对obj的引用?

帕达万芬

我的问题是,我绑定到异步函数的数组在该函数的后续调用中似乎不会得到更新,即使bind'ed数组在该函数内部已更新也是如此。

在下面的函数中,我多次异步调用queryForData传递在全球范围内宣布的历史记录。LOG1总是打印出一个空数组,而LOG2总是打印出使用该迭代的正确数据检索到的数组。但是,它似乎与其他调用中检索到的数组没有联系。

请帮忙

exports.callQuery = function(req, res) {
  var http = require('http');
  var history = [];

  // loop over all entries in "Stocks" collection
  // and call queryForData
  Stocks.find(function (err, stocks){
    stocks.forEach(function callback(entry){
        queryForData(entry, this.history);
        }.bind({history : history})
    );
  });

  // perform an HTTP request for data and call the callback 
  // function which concats the data arrays together.
  var queryForData = function(stockData, history) {   
    var options = {
      host: 'query.blah.com',
      path: '/blah'+stockData
    };

    var callback = function(response) {
      var str = '';

      //another chunk of data has been received, so append it to `str`
      response.on('data', function (chunk) {
        str += chunk;
      });

      //the whole response has been received, so we just print it out here
      response.on('end', function () {

        var data = JSON.parse(str);
        console.log("LOG1: ", this.stocksHistoryData);
        this.stocksHistoryData = this.stocksHistoryData.concat(data);
        console.log("LOG2: ", this.stocksHistoryData);

        }.bind({stocksHistoryData : history})
      );
    };
    http.request(options, callback).end();
  };
};
格里姆

concat()返回一个数组。因此,您将使用该函数范围之外无法访问的新数组覆盖对该数组的引用。它发生在这里:

this.stocksHistoryData = this.stocksHistoryData.concat(data);

尝试将以上行替换为:

data.forEach(function(item){
    this.stocksHistoryData.push(item);
}, this);

这样,您始终可以建立现有阵列的状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JS绑定会获取obj的状态还是保留对obj的引用?

来自分类Dev

在实现IEqualityComparer <T> .GetHashCode(T obj)时,可以使用当前实例的状态,还是必须使用obj?

来自分类Dev

获取嵌套的obj值

来自分类Dev

如何从Three.js中的上载obj文件获取顶点

来自分类Dev

如何从循环(js)中的 Map(obj) 获取键和值?

来自分类Dev

obj.hasOwnProperty(key)与使用obj [key]直接引用

来自分类Dev

如何从ImageIcon获取图像(obj)

来自分类Dev

三个js加载obj + mtl获取纹理图像作为画布

来自分类Dev

如何从python中的.obj文件获取坐标?

来自分类Dev

当反应值是引用类型时,苗条的输入绑定会中断吗?

来自分类Dev

这会导致保留周期吗?(obj-c,示例代码)

来自分类Dev

OBJ加载程序,纹理绑定和纹理缓冲区

来自分类Dev

将.obj转换为.js文件

来自分类Dev

三个js raycasting OBJ

来自分类Dev

三.JS OBJ模型不显示

来自分类Dev

三个js raycasting OBJ

来自分类Dev

OBJ Loader THREE.JS问题

来自分类Dev

将.obj转换为.js文件

来自分类Dev

通过obj映射并调度键和状态值

来自分类Dev

如何根据 obj 标志的状态找到数组长度

来自分类Dev

为什么我的项目引用指向“ obj”目录中的dll?

来自分类Dev

通过引用Swift翻译Obj-C pass

来自分类Dev

为什么我的项目引用指向“ obj”目录中的dll?

来自分类Dev

如何从 ajax cfc 获取多个值?我的文本字段中不断出现 obj obj

来自分类Dev

按 obj 字段过滤数组并使用此 obj 字段获取新数组

来自分类Dev

Three.js .obj加载程序无法与3Ds Max .obj一起使用

来自分类Dev

Obj-C-获取键中所有值的总和?

来自分类Dev

OpenGL Java获取3D OBJ模型的属性

来自分类Dev

循环仅获取最后一个obj

Related 相关文章

热门标签

归档