【问题标题】:How to add value to an object from a function如何从函数向对象添加值
【发布时间】:2016-03-17 02:39:03
【问题描述】:

我有一个类似的对象

var obj = {
    key : firstLevel()
}

现在我希望从函数返回 obj.key 的值,例如 firstLevel()。 我的问题是,firstLevel() 函数嵌入了一个回调函数。我想将它的响应作为obj.key 的值返回。

函数定义如下

var firstLevel = function(){
     esClient.search(function(response){
     console.log(response); //I want to return this response as the value for obj.key
     })
}

【问题讨论】:

  • 我认为你必须把它放在一个变量中,然后将它传递给 JSON 对象。
  • @Shubham 我认为变量的范围是这里的一个问题..
  • esClient.search 这应该是同步的,否则您将在回调之前分配值。或者您可以移动 esClient.search 另一个函数并在回调后赋值或创建对象。

标签: javascript jquery callback hashmap


【解决方案1】:
var firstLevel = function(){
     var res;
     esClient.search(function(response){
         console.log(response); //I want to return this response as the value for obj.key
         res = response;
     });

     while(!res) {}
     return res;
}

这会起作用,但它会冻结你的窗口。

【讨论】:

    【解决方案2】:
    var firstLevel = function(){
        var result;
        esClient.search(function(response){
            result=response;  
        })
        return result;
    }
    

    【讨论】:

    • 如果搜索函数是异步的,结果总是空的。
    • 我认为要求是获取响应obj.key的值。
    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 2019-08-13
    • 1970-01-01
    • 2020-03-28
    • 2021-03-31
    • 2019-04-20
    • 2014-08-09
    • 2013-06-01
    相关资源
    最近更新 更多