在SO中多次询问这个问题.但我还是得不到东西.
我想从回调中获得一些价值.请查看下面的脚本以获得说明.
function foo(address){
// google map stuff
geocoder.geocode( { 'address': address}, function(results, status) {
results[0].geometry.location; // I want to return this value
})
}
foo(); //result should be results[0].geometry.location; value
Run Code Online (Sandbox Code Playgroud)
如果我试图返回该值只是"未定义".我从SO那里听了一些想法,但仍然失败了.
那些是:
function foo(address){
var returnvalue;
geocoder.geocode( { 'address': address}, function(results, status) {
returnvalue = results[0].geometry.location;
})
return returnvalue;
}
foo(); //still undefined
Run Code Online (Sandbox Code Playgroud) 所以我在服务器中有一组对象,我想在页面加载时填充ng-repeat.
我有一个工厂从服务器上的资源中获取列表,如下所示:
app.factory('objectArray', ['$http', function($http) {
// This is returning a $$state object
// instead of response.data...
return $http.post('/get_collection').then(function(response) {
console.log(response.data);
return response.data;
});
}]);
Run Code Online (Sandbox Code Playgroud)
在使用ui-router和state声明中的resolve属性之前,我已经有了这段代码.但是当将这个工厂直接注入我的控制器时,而不是获得response.data我得到一个$$状态对象.
我的控制器看起来像这样:
app.controller('applicationController', ['$scope', 'objectArray', function($scope, objectArray) {
$scope.array = objectArray;
console.log($scope.array);
}]);
Run Code Online (Sandbox Code Playgroud) 我得到"对象"值而不是确切的值.如何使用回调函数获取返回的值?
function loadDB(option, callBack){
var dfd = new jQuery.Deferred(),
db = window.openDatabase('mydb', '1.0', 'Test DB', 1024*1024),
selectQuery = "SELECT log FROM LOGS WHERE id = ?";
db.transaction(function(tx){
tx.executeSql(selectQuery,[option],function(tx,results){
var retval;
if( results.rows.length ) {
retval = unescape(results.rows.item(0)['log']);
}
var returnValue = dfd.resolve(retval);
});
});
return dfd.promise();
}
results = loadDB(2).then(function(val){ return val; } );
console.log("response***",results);
Run Code Online (Sandbox Code Playgroud)