在promise构造函数中解析promise是否有效?

时间:2019-01-14 05:23:56

标签: javascript es6-promise

像这样在构造函数中解析承诺是否有效

var promise1 = new Promise(function(resolve, reject) {
    resolve('foo');
});

代替构造创建后的解析,如下所示

var promise1 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve('foo');
  }, 300);
});

1 个答案:

答案 0 :(得分:2)

是的,在构造函数中同步解决新的Promise是完全可以接受的。 IIRC,它甚至是A+ promise验证套件中的测试用例。

但是,如果解析不是 有条件的,则使用ES6 Promise静态方法“ resolve”可以更清楚地实现:

#include <iostream>
#include "B_pj1.h"
int main(){
    int s1=doIt<1>(3,2); //:
    int s2=doIt<2>(3,2);
    std::cout << s1<<" "<<" "<<s2<<std::endl;
    int asfasd=0;
}

注意如果抛出错误,两种方法会有所不同:

      
  • 如果执行者抛出错误,则var promise1 = Promise.resolve( 'foo'); 返回被拒绝的承诺。   
  • 如果对new Promise( executor)的参数求值抛出错误,则该异常会阻止对Promise.resolve的调用。
相关问题