承诺API回调-如何正确解决或拒绝
Promisifying API callbacks - How to properly resolve or reject
我读过类似的文章,但是没有一个完全击中头部,如何正确地做到这一点。
我理解承诺,以及它们通常是如何创建的,成功和失败的监听器等待被触发,要么解决,要么拒绝。
我不明白的是,当我调用一个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调用的结果?
像这样:
function getCurrentPositon(options){
return new Promise(function(resolve, reject){
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}
你不知道哪个被调用,相反,你对两个选项都做出反应——失败就拒绝,完成就完成。
相关文章:
- 简单的ES6承诺问题-交换解决和拒绝参数
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的
- 角度$q.拒绝不解决
- 在$http内解决/拒绝承诺是行不通的
- 拒绝并解决Q承诺
- 关于承诺/A+规范,是一个从未被允许解决或拒绝的承诺
- AngularJS/Karma-测试函数返回已解决或拒绝的promise
- 承诺-链接解决/拒绝
- 承诺不期望得到解决或拒绝
- 在自定义的Jasmine匹配器中解决和拒绝承诺
- 承诺API回调-如何正确解决或拒绝
- new Promise和Promise的区别.在bluebird中解决/拒绝
- 如何知道什么时候所有的承诺都被拒绝了,或者用基本的js承诺解决了
- 你是否应该在承诺中解决或拒绝后退货
- 我是否需要在早期解决/拒绝后返回?
- 麻烦的错误,未能拒绝与蓝鸟.解决得很好.错误似乎会使应用程序崩溃
- 问美元.当有一个被拒绝的承诺时,一切都解决了
- JavaScript承诺在未被拒绝或解决时是否会造成内存泄漏?
- 在外部回调中解决/拒绝承诺