Javascript 在承诺构造函数中解析承诺是否有效?
在构造函数中这样解析承诺有效吗Javascript 在承诺构造函数中解析承诺是否有效?,javascript,es6-promise,Javascript,Es6 Promise,在构造函数中这样解析承诺有效吗 var promise1 = new Promise(function(resolve, reject) { resolve('foo'); }); 而不是像下面这样在构造创建之后解析 var promise1 = new Promise(function(resolve, reject) { setTimeout(function() { resolve('foo'); }, 300); }); 是的,在构造函数中同步解析新承诺是完全
var promise1 = new Promise(function(resolve, reject) {
resolve('foo');
});
而不是像下面这样在构造创建之后解析
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('foo');
}, 300);
});
是的,在构造函数中同步解析新承诺是完全可以接受的。IIRC,它甚至是验证套件中的一个测试用例 但是,如果解决方案不是有条件的,则可以使用ES6 Promise静态方法“resolve”更清楚地实现:
var promise1 = Promise.resolve( 'foo');
注意:如果抛出错误,这两种方法不同:
- 如果执行者抛出错误,
返回被拒绝的承诺。新承诺(执行者)
- 如果对
的参数求值引发错误,则异常会阻止调用Promise.resolve
。Promise.resolve
var promise1 = Promise.resolve( 'foo');
注意:如果抛出错误,这两种方法不同:
- 如果执行者抛出错误,
返回被拒绝的承诺。新承诺(执行者)
- 如果对
的参数求值引发错误,则异常会阻止调用Promise.resolve
。Promise.resolve
resolve
,那么这样做似乎很愚蠢(如果没有异步调用,为什么还要使用承诺呢?)您的第一个示例可以简化为。如果不是有效的使用,该函数将不存在-case@CertainPerformance框架的调用方需要承诺返回值类型。但是对于我的特定用例,我不必等待解析。当然,如果在构造函数中无条件调用resolve
,那么这样做似乎很愚蠢(如果没有异步,为什么要使用承诺呢?)您的第一个示例可以简化为。如果不是有效的使用,该函数将不存在-case@CertainPerformance框架的调用方需要承诺返回值类型。但是对于我的特定用例,我不必等待解决。