承诺 API 回调 - 如何正确解决或拒绝
Promisifying API callbacks - How to properly resolve or reject
我读过类似的帖子,但是 none 很想知道如何正确地做到这一点。
我了解 Promises 以及它们通常是如何创建的,成功和失败的侦听器等待被触发以解决或拒绝。
我不明白的是,当我调用一个将成功和失败回调作为参数的API方法时- 我如何确定哪个回调正在被触发,所以我可以解决或拒绝它?
例如这个网站 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 调用的结果?
类似的东西:
function getCurrentPositon(options){
return new Promise(function(resolve, reject){
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}
您不知道调用了哪一个,相反,您对两个选项都做出了回应——如果失败则拒绝,如果成功则履行。
我读过类似的帖子,但是 none 很想知道如何正确地做到这一点。
我了解 Promises 以及它们通常是如何创建的,成功和失败的侦听器等待被触发以解决或拒绝。
我不明白的是,当我调用一个将成功和失败回调作为参数的API方法时- 我如何确定哪个回调正在被触发,所以我可以解决或拒绝它?
例如这个网站 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 调用的结果?
类似的东西:
function getCurrentPositon(options){
return new Promise(function(resolve, reject){
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}
您不知道调用了哪一个,相反,您对两个选项都做出了回应——如果失败则拒绝,如果成功则履行。