Promiseのnewにより、promiseオブジェクトができる。

new Promise

オブジェクトには、引数としてfunctionを渡すことになっている。

new Promise(function)

さらにfunctionでは、第1引数にはresolveを、第2引数にはrejectをとる。

new Promise(function(resolve,reject)

functionで処理結果が正常のとき(APIへのアクセスが成功したとき)は、resolveが実行され、fullfilledの状態になる。

ここでは(ミリ秒後に、’setTimeoutが実行される)setTimeout関数をつかっている。当関数のAPIにうまくアクセスできて、resolveによりfullfilledとなる。これにより、この関数の機能は、後述のthenに登録される。

new Promise(function(resolve,reject){
         setTimeout(function(){
             resolve(‘setTimeoutのAPIへのアクセスに成功!’);
       };,3000);
   });

◎Promiseオブジェクトは、pending、fullfilled、rejectedのいずれかの状態にある。



function名をつけて、returnするようにする。

function promise(){
return new Promise(function(resolve,reject){
         setTimeout(function(){    //成功した場合
             resolve(‘setTimeoutのAPIへのアクセスに成功!’);
       };,3000);
   });
}

このようにして作ったpromiseオブジェクトの実行をthenで登録する。

promise().then(function(value){
     //非同期処理成功
        console.log(value)   //  ‘setTimeoutのAPIへのアクセスに成功!’が出力される
 }).catch(function(error){
     //非同期処理、失敗。呼ばれない。
       console.log(error)
});

function promise()は、一種のコールバック関数のような。