Promisifying API回调 - 如何正确解决或拒绝

时间:2015-10-01 17:55:05

标签: javascript callback promise asp.net-web-api es6-promise

我已经阅读了类似的帖子,但没有一个人能够正确地理解这一点。

我理解Promise以及它们通常是如何通过成功和失败的侦听器等待被触发来解决或拒绝而创建的。

我不明白的是,当我调用一个成功和失败回调作为参数的API方法时 - 如何确定触发哪个回调,以便我然后才能解决或拒绝它?

例如,使用此Web API并考虑 navigator.geolocation.getCurrentPosition 方法,它提供:

var options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0
};

function success(pos) {
  var crd = pos.coords;

  console.log('Your current position is:');
  console.log('Latitude : ' + crd.latitude);
  console.log('Longitude: ' + crd.longitude);
  console.log('More or less ' + crd.accuracy + ' meters.');
};

function error(err) {
  console.warn('ERROR(' + err.code + '): ' + err.message);
};

navigator.geolocation.getCurrentPosition(success, error, options);

当API发回成功或错误时,它会调用我给它的一个回调,但是我不知道它将调用哪一个来解决或拒绝它。< /强>

问题是: 听取哪个回调被触发的正确方法是什么?ES6如何看待这种API调用的结果?

1 个答案:

答案 0 :(得分:4)

类似的东西:

function getCurrentPositon(options){
   return new Promise(function(resolve, reject){   
     navigator.geolocation.getCurrentPosition(resolve, reject, options);
   });
}

你不知道知道哪一个被调用,而是你回应这两个选项 - 如果失败则拒绝并且如果满足则完成。