繁体   English   中英

为什么下面的_.map函数什么都不返回?

[英]Why is the following _.map function returning nothing?

我创建了一个函数来查找对象:

store.js

store.find = () => {
  const query = new Parse.Query(Document)
  return query.find()
}

我正在这样使用(并将值分配给this.documents ):

main.js

store.find().then((results) => {
  this.documents = _.map(results, (result) => {
    return result.toJSON()
  })
})

有用。 但是store.find().then( ...)部分在main.js重复了很多次,所以我将其变成了一个函数:

store.js

store.fetch = (documents) => {
  return store.find().then((results) => {
    documents = _.map(results, (result) => {
      return result.toJSON()
    })

  })
}

我这样使用:

main.js

store.fetch(this.documents)

但是没有任何内容分配给this.documents ,并且没有错误消息。 可能是什么问题?

注意: this.documents是一个对象数组。 例:

[{
  title: this.title,
  content: this.content,
}, ...

编辑:

我这样做:

store.fetch = (documents) => {
  store.find().then((results) => {
    documents = _.map(results, (result) => {
      return result.toJSON()
    })
    console.log(documents)
  })
}

documents被分配:

[Object, Object, Object, ...]

因此,我认为这只是没有将此数组分配给this.documents 也许变量不能是参数,而不能同时赋值?

您正在传递this.documents作为参数,并试图在函数内部修改该属性。 但是,这不起作用,因为Javascript没有“按引用传递”功能 仅“按值传递”。

相反,您可以尝试分别传递对象和属性名称:

store.fetch = (obj, prop) => {
  return store.find().then((results) => {
    obj[prop] = _.map(results, (result) => {
      return result.toJSON()
    })
  })
}
store.fetch(this, 'documents')

尝试让你产生一个.then经过块store.fetch(this.documents) 并且不要忘记存储上下文

var self = this;
store.fetch(self.documents).then(function () {
    console.log(self.documents);
});

还是usign es6

store.fetch(this.documents).then(() => {
    console.log(this.documents);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM