2015-12-11 49 views
0

添加到对象我有一个对象,如一个如何从价值功能

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 
    }) 
} 
+0

我想你必须把它放在一个变量中,然后传递给JSON对象。 – Shubham

+0

@Shubham 我认为变量的范围在这里是一个问题.. –

+0

esClient.search应该是同步的,否则您将在回调之前分配值。或者您可以移动esClient.search另一个函数并在回调后赋值或创建对象。 –

回答

0
var firstLevel = function(){ 
    var result; 
    esClient.search(function(response){ 
     result=response; 
    }) 
    return result; 
} 
+0

如果搜索功能是异步的,结果始终为空。 –

+0

我认为需求是获得对obj.key的响应值。 –

0
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; 
} 

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