Javascript 如何从函数向对象添加值

Javascript 如何从函数向对象添加值,javascript,jquery,callback,hashmap,Javascript,Jquery,Callback,Hashmap,我有一个像这样的物体 var obj = { key : firstLevel() } 现在我希望从函数(比如firstLevel())返回obj.key的值。 在我的例子中,问题是firstLevel()函数嵌入了回调函数。我想将它的响应作为obj.key的值返回 函数定义如下 var firstLevel = function(){ esClient.search(function(response){ console.log(response); //I wa

我有一个像这样的物体

var obj = {
    key : firstLevel()
}
现在我希望从函数(比如
firstLevel()
)返回
obj.key
的值。 在我的例子中,问题是
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另一个函数并在回调后赋值或创建对象。如果搜索函数是异步的,则结果总是空的。我认为要求获取对obj.key的响应的值。
var firstLevel = function(){
    var result;
    esClient.search(function(response){
        result=response;  
    })
    return result;
}
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;
}