相关疑难解决方法(0)

如何从异步回调函数返回值?

在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)

javascript asynchronous callback javascript-objects

440
推荐指数
3
解决办法
33万
查看次数

为什么这个工厂返回$$状态对象而不是response.data?

所以我在服务器中有一组对象,我想在页面加载时填充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)

state factory angularjs

9
推荐指数
1
解决办法
1万
查看次数

使用promise设置变量以从回调函数返回

我得到"对象"值而不是确切的值.如何使用回调函数获取返回的值?

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)

javascript callback promise

7
推荐指数
2
解决办法
1万
查看次数