当您具有基于Promise的功能时,如下所示:
function foo() {
return new Promise(function(fulfill, reject) {
// Do some async work, and then...
console.log('a');
fulfill('b');
console.log('c');
});
}
您会注意到,c
它将在fulfill
语句后打印,这意味着该函数不会在完成或拒绝时中断。这很麻烦,因为大多数逻辑都假定函数一旦调用fulfill()
or便应结束reject()
。
问题:
在or或call之前简单地添加是安全还是标准用法?return
fulfill()
reject()
function foo() {
return new Promise(function(fulfill, reject) {
// Do some async work, and then...
console.log('a');
return fulfill('b');
console.log('c'); //Does not get printed, as the function has ended execution.
});
}
// Call the function:
foo()
.then(function(response) {
console.log(response); //This is called once the function calls fulfill, will print 'b'
});
使用这样的Promises是否有任何问题?在线的大多数承诺信息return
在实现或拒绝之前没有引用使用该语句。另一个附带的问题是,在使用then
和时最常用的缩进方式是什么catch
?
Promise构造函数用于将不将Promise返回给Promise的API转换。您应该考虑使用提供promisification的库(即使您全面使用本机promise),因为它提供了一种安全的替代方案,该方案不会在错误处理逻辑中包含细微的错误。
自动promisification也相当快。
这样做是完全安全的,promise构造函数没有什么特别的-它们只是纯JavaScript。Domenic在他的博客中讨论了promise构造器的设计。
尽早返回是非常安全的(就像其他函数一样)-实际上,这在常规异步函数中非常普遍。
(另外,在您的示例代码,你应该只使用Promise.resolve
,但我相信它是这不仅因为它是一个简单的例子)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句