18837


**コード**

[code]

    "use strict";
    var pObj = new Promise(function (resolve, reject) {
      reject('テスト');
    })
    console.log(pObj);
    
[/code]

> Promise {[[PromiseStatus]]: "rejected", [[PromiseValue]]: "テスト"}  
>  Uncaught (in promise) テスト

* * *

**疑問＆質問**  
・reject('テスト');が実行されるタイミングは？  
・promiseオブジェクトが作成される前、それともpromiseオブジェクト作成後に実行？  
・Promise {[[PromiseStatus]]: は"pending"後"rejected"？ それとも最初から"rejected"なのでしょうか？

* * *

**確認しようと思ったけれどもうまくいかなかったコード**

[code]

    "use strict";
    pObj = new Promise(function (resolve, reject) {
      console.log("1");
      //console.log(pObj);
      reject('テスト');
      console.log("2");
      console.log(pObj);
    })
    console.log("3");
    console.log(pObj);
    
[/code]


CC BY-SA 3.0
2015-11-15T03:30:08.517
18831
2019-07-28T11:09:19.603
2019-07-28T11:09:19.603
32986
7886
question
javascript ecmascript-6 promise
new Promise(function(resolve, reject) { … }); コンストラクタ内で、resolve または reject を呼び出す時の挙動について


[ECMA Script 2015 の仕様書の `Promise(executor)` の記述](http://www.ecma-
international.org/ecma-262/6.0/#sec-promise-executor) に従うと、回答は以下のとおりになります。

> reject('テスト');が実行されるタイミングは？

`Promise(executor)` の実行中です。

> promiseオブジェクトが作成される前、それともpromiseオブジェクト作成後に実行？

利用する観点では、作成される(完了する)前です。厳密に言うと作成中ですね。

> Promise {[[PromiseStatus]]: は"pending"後"rejected"？
> それとも最初から"rejected"なのでしょうか？

利用する観点では、最初から `rejected` です。厳密には、内部状態として `pending` 後に `rejected`
になっていると考えられますが、それを観測する手段はないでしょう。


CC BY-SA 3.0
2015-11-15T06:03:36.167
18837
2015-11-15T06:03:36.167
208
18831
answer