【问题标题】:Is it possible to generate parameters dynamically inside a function argument?是否可以在函数参数内动态生成参数?
【发布时间】:2017-05-15 18:51:30
【问题描述】:

每个人。

我有一个chrome.storage.local.get 函数,它应该接受已经设置到本地内存的对象。它的结构类似于...

let numberOfRows = 3; //The number of generic rows of this information I'll need
let storageIDs = []; //The keys for the object that I'll need.
let storageArray = storageIDs.slice(0); //The default keys I need I'll number if I need to
let storageObject = {}; //The final object will be stored in here

for(...) {//Fill the storageArray with each key (number appended) at the end}

for(...) {//Turn each finalized key into an object stored in an storageObject}

chrome.storage.local.get({
    (function(){
      for(let index in storageObject) { 
          if (storageObject.hasOwnProperty(index)) {
            return storageObject[index];
          }
        }
    })()
}, function (result) {...}

所以...最终结果是我将设置行数并传入一个键数组,然后它将每个键转换为对 chrome 本地存储的对象引用。

但我不想多次调用storage.local.get,所以我想知道是否可以返回参数列表的storageObject inside 内的每个对象?或者有没有更简单的方法来获取storageObject 中的所有对象作为参数传入?

编辑: chrome.storage.local.get 期待一组对象,"keyValue1": {}, "keyValue2": {} 等等。

当它将这些对象传递给result 时,我可以将它们作为result["keyValue1"] 回调,但如果我放入包含所有键的对象,我只能回调该对象。

我需要的是一种无需多次调用chrome.storage.local.get() 即可动态传递storageObject 的所有属性的方法。

【问题讨论】:

  • 您的问题不清楚?预期的输出、格式是什么?
  • chrome.storage.local.get 期望什么参数?一个普通的对象?
  • 澄清了 chrome.storage.local.get 的期望和我的期望。该问题中的任何答案似乎都无法回答我的问题。它们似乎都是一个预设的参数列表,并声明每个参数的值。我正在寻找将未知数量的参数作为对象或数组中的单个对象传递。
  • 乍一看,目标似乎是一个不必要的复杂化。查看所需代码的示例对我很有帮助。到目前为止,通过 ES2015 ... 扩展运算符或其 polyfill 似乎很容易实现。

标签: javascript google-chrome-extension


【解决方案1】:

我的要求是将动态数量的参数传递给 chrome.storage.local.get 函数,每个函数都将被视为一个对象,并且这些对象都将作为封闭函数的 result 被拾取。

事实证明我一直都能做到。

let numberOfRows = 3; //The number of generic rows of this information I'll need
let storageIDs = []; //The keys for the object that I'll need.
let storageArray = storageIDs.slice(0); //The default keys I need I'll number if I need to

for(...) {//Fill the storageArray with each key (number appended) at the end}

chrome.storage.local.get( storageArray, function (result) {...})

get 接受一个对象(花括号)或对象键数组。我从来没有让它工作,因为我总是忘记删除花括号。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多