2016-03-26 7 views
1

新しい約束を作成する必要なしに約束を返す迅速な方法を探しています。静的関数を使用して新しい約束を返す

は、点A(下記)

new Promise(function(resolve){ 
    resolve(data1, data2); 
}) 
.then(function(data1, data2){ 
    if(something){ 
     // returns promise 
    } 
    else{ 
     // POINT A 
     return new Promise(function(fulfill){ 
      fulfill(data1, data2); 
     });  
    } 
}) 
.then(function(data){ 
    console.log(data); 
}); 

理想的に関数を呼び出す関数を書くから私を救うreturn Promise.fulfill(data1, data2);のようなもので、私が何をやってのが静的な方法です。

+0

静的関数の望ましい実装: 'Promise.fulfill = function(data1、data2、...){return new Promise(function(fulfill){fulfill(data1、data2、...);}); } ' – Andy

+0

単に' then'コールバックの中で、約束を作成する必要は全くありません。単純な値を単純に '返す 'こともできます。 – Bergi

答えて

3

あなたはPromise.resolve(data)を探しています:

Promise.resolve(value)メソッドは、指定された値で解決された約束のオブジェクトを返します。値がthenable(つまりthenのメソッドを持つ)である場合、返される約束は、それを最終的な状態にして、それに従う。それ以外の場合、返された約束はその値で満たされます。

いつでも1つの値btwを渡すことができます(あなたの例はうまくいかないでしょう)。

+0

コメントをいただき、ありがとうございます。しかし、構築時に、複数のパラメータを渡すことができます。なぜ、より高速な静的メソッドが使用できないのですか。 – Andy

+1

* "ただし、構築時に複数のパラメータを渡すことができます" *できません。 'resolve'は1つの引数もとります。約束は*単一*未来の価値を表します。もちろん、その値は配列である可能性があります。 –

+0

あなたは正しいです、ありがとう、私は配列/オブジェクトの使用に頼るでしょう。 – Andy

0

の内部には、.then機能が必要ありません。それは暗黙的です。ただreturn x

関連する問題