使用promise返回回调函数的值

时间:2016-06-22 12:30:32

标签: javascript jquery angularjs node.js

如何使用promise(使用promise中的resolve方法)返回reverseGeocodeData的值?

geocoder.reverseGeocode(33.7489, -84.3789,function (err, reverseGeocodeData){
    //something;
},
// Reverse Geocoding
return new Promise(function(resolve,reject){
    resolve();
});

2 个答案:

答案 0 :(得分:0)

你必须在goecoder的回调中解决或拒绝承诺......

return new Promise(function(resolve, reject) {
    geocoder.reverseGeocode(33.7489, -84.3789, function (err, reverseGeocodeData) {
         if(err) return reject(err);
         resolve(reverseGeocodeData);
    });
});

这将是Promise的基本实现。根据您使用的承诺库,当然还有其他选项。我更喜欢bluebirdwhen

答案 1 :(得分:-1)

这是使用bluebird.js(http://bluebirdjs.com/docs/api/promise.promisify.html

的示例
var Promise = require('bluebird');
var reverseGeocodePromise = Promise.promisify(geocoder.reverseGeocode);

reverseGeocodePromise(33.7489, -84.3789)
  .then(function(result) {
    // do something;
  })
  .catch(function(err) {
    // handle error
  })