2016-09-29 3 views
2

は基本的にそれ自体が約束を使用する関数から約束を返すには?私がやろうとしています何

function test() { 
getSomeValue().then(function (data) { 
    //process data 
}); 
} 

function getSomeValue() { 
//do some long process 
return new Promise(function (resolve, reject) { 
    resolve(result); 
}); 
} 

function getSomeOtherValue() { 
//do some long process 
return new Promise(function (resolve, reject) { 
    resolve(result); 
}); 
} 

機能テストは約束を返した後、返されたデータのいくつかの計算を実行する関数を呼び出します。この部分はうまく動作します。今度は、関数getSomeValueは、約束を返す別の関数を呼び出す必要があります。 getSomeValueから約束を返信するには、getSomeOtherValueが完了するまで待ってください。

その他の情報が必要な場合は教えてください。

+0

)。()....' – Rayon

答えて

1

あなただけgetSomeValuegetSomeOtherValueをチェーンすることができます

function getSomeValue() { 
    //do some long process 
    return new Promise(function (resolve, reject) { 
     resolve(result); 
    }).then(getSomeOtherValue); 
} 

注文は、その後に切り替えることにしたい場合:

function getSomeValue() { 
    //do some long process 
    return getSomeOtherValue().then(function() { 
     return new Promise(function (resolve, reject) { 
      resolve(result); 
     });   
    } 
} 

をしかし、これは単に例示のためのものです。あなたがより高いレベルで効果的にそれらをチェーンできるように、あなたはあなたの約束を設計することができます。

function test() { 
    getSomeOtherValue() 
     .then(getSomeValue) 
     .then(function (data) { 
      //process data 
     }); 
} 
+0

実際getSomeOtherValueは()の前に呼び出す必要があります。私はgetSomeOtherValue()からのデータを必要とし、それに基づいて応答を生成します –

1

を解決するgetSomeOtherValue機能を待つために、あなたはgetSomeOtherValueから返された約束でgetSomeValue機能の約束を解決する必要があります関数。以下のコードは、うまくいけば

function test() { 
getSomeValue().then(function (data) { 
    //process data 
}); 
} 

function getSomeValue() { 
//do some long process 
return new Promise(function (resolve, reject) { 
    getSomeOtherValue().then(function (data) { 
     resolve(result); 
    });   
}); 
} 

function getSomeOtherValue() { 
//do some long process 
return new Promise(function (resolve, reject) { 
    resolve(result); 
}); 
} 
2

は、ちょうどgetSomeValueの値を処理するために別の関数で、まずチェーンをgetSomeOtherValue関数を呼び出すgetSomeValue前getSomeOtherValueから値を取得するために、そして最終的には、呼び出し側に結果を返す意味するべきである(テストその後、機能)あなたはチェーン、 `.thenを(行うことができます

​​
+0

説明を追加しました – alpha

関連する問題