栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何处理承诺中的错误?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何处理承诺中的错误?

经验法则

每当您对如何使用Promise有所疑问时,请考虑一下同步版本。

try{   var result = myFn(param);   // business logic with result} catch(e) {    //error handling logic}

至少对我来说,这比第一个参数有时是的回调要干净得多

null

promises方式几乎总是与问题的同步版本非常相似:

myFn(param).then(function(result){    // business logic with result}).catch(function(e){    //error handling logic});

使用回调函数时,myFn看起来像什么:

var myFn = function(param){    return new Promise(function(resolve, reject){        var calc = doSomeCalculation(param);        if(calc === null) { // or some other way to detect error reject(new Error("error with calculation"), null);        }        someAsyncOp(calcN,function(err, finalResult){ if(err) reject(err); resolve(finalResult);        })    });};

使用回调/ nodebacks

这只是在使用回调时应做的事情,在使用promises时要简单得多,并且可以执行以下操作:

var myFn = function(param){    var calc = doSomeCalculation(param);    ...    return someAsyncOp(calcN); // returning a promise.}

此外,当在promise链中工作时,您将获得抛出安全性:

myFn(param).then(function(calcN){   // here, you throw to raise an error and return to resolve   // new Promise should be used only when starting a chain.}).catch(function(err){    // handle error}).then(function(){   // ready to go again, we're out of the catch});

请注意,诸如 Bluebird
RSVP

Q之
类的某些库提供语法糖和方法的自动实现,因此您几乎不必使用

newPromise
自己。

另外,还要考虑读这个和那个,详细了解承诺的错误处理。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号