2017-05-01 16 views
0

私は質問の答えを見つけるのが難しいです。質問する方法がわからないためです(使用する検索用語)。私は約束を理解することに本当に苦労しており、数多くのチュートリアルビデオを見ていて、それをクリックするための基本的な部分がまだ得られていません。内部機能の約束を包み込む/傍受する

ノードでは、私はrp()メソッドを呼び出すと約束を返すrequest-promiseモジュールを使用しています。私は電話しています リターンrp(サービス);機能内からの 。しかし、私がやりたいことは、.then()ハンドラをこれに追加してサービス呼び出しの結果を後処理してから、呼び出し元に約束を返す前に呼び出し元に依然として独自の呼び出しを持たせることですハンドラ。

どうすればよいですか?

+0

コードの一部を表示することはできますか? – TGrif

+0

'return rp(service).then(...)'? 'then'がコールバックの結果について別の約束を返すことに注意してください。 – Bergi

答えて

0

正確にあなたが苦労している場所をよりよく理解するために、現在のコードを確認すると役に立ちます。

一般に、約束事は、連鎖することができる将来の価値のプレースホルダと考えることができます。

質問を正しく理解していれば、サーバーにリクエストして応答を受信し、応答で何かを行い、呼び出し元に返信したいと考えています。

const callService = (url) => { 
    // make sure to return your promise here 
    return rp(url) 
    .then((html) => { 
     // do something with html 
     return html; 
    }); 
}; 

今、あなたはそうのようにそれを呼び出すことができます -

callService('http://www.google.com') 
    .then((html) => { 
    console.log(html); 
    }).catch((err) => { 
    // error handling 
    }); 

よくある間違いは、あなたのトップレベルの機能とそれに続く、その後の関数でreturn文を省略することです。

詳細を自由に入力してください。

+0

ありがとうございました - それは私がやろうとしていたものでした。私はそれがちょうど私がリターンrp(URL)をしていた。これはちょうど機能します。 :) – user1588877

+0

@ user1588877問題ありません!それに慣れるにはちょっと時間がかかりますが、いったんそれを掛けてしまえば、コールバックよりもずっといいです。あなたはいつもトップとトップの間にいつも戻ってくるようにしてください。 asyncを試してみてください/次に待ってください! – alpeware

関連する問題