如何简化此声明:
.then
我称这些后缀(从public static async Task<XDocument> LoadAsync
( String path
, LoadOptions loadOptions = LoadOptions.PreserveWhitespace
)
{
return Task.Run(()=>{
using (var stream = File.OpenText(path))
{
return XDocument.Load(stream, loadOptions);
}
});
}
开始)很多,我不在乎它是否成功,但我关心它何时失败,是否有更简单的方法做到了吗?
答案 0 :(得分:3)
使用catch函数只是怎么样?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
catch()方法返回Promise并仅处理被拒绝的案例。它的行为与调用Promise.prototype.then(undefined,onRejected)相同。
答案 1 :(得分:2)
Promise Object中的then
函数有参数,第一个参数是成功处理,第二个是处理错误。但它并不建议在then
方法中捕获错误。
这两个是相同的(我使用console.log作为错误处理程序):
// first way:
Promise.reject('error').then(success => {}, err => console.log(err));
// console logs "error"
// second way
Promise.reject('error').catch(err => console.log(err));
// console logs "error"
// your code
Promise.reject('error').then(success => {}, err => console.log(err))
.catch(err => console.log(err))
// it will prints only a "error" in the console, so there are the same
所以,如果你不关心什么时候成功,你可以像这样简化你的代码:
Foo.execSomething(k,v).catch(err => console.log)