外部APIにポストリクエストを行い、ポストリクエストからのレスポンスに基づいて独自のカスタムクラスのオブジェクトを作成したいとします。私はリクエストモジュールを使って投稿リクエストを作成しています。私は、単にコールバック関数からオブジェクトを返す必要があると思ったが、コールバックが完了する前に関数が返るように見えるので、常にnullオブジェクトが返されます。関数をコールバック関数を待たせることができますか?ポスト要求を行うTypescriptのリクエストモジュールのコールバック
機能:
if (parsedJson["status"] === "200")
真になることはありません:
read(id: string) {
request.post({
headers: {
"content-type": "application/json"
},
url: baseUrl + service,
json: {
"id": id
}
}, function(error: any, response: http.IncomingMessage, body: any) {
if (!error && response.statusCode === 200) {
var parsedJson = JSON.parse(JSON.stringify(body));
/* tslint:disable:no-string-literal */
if (parsedJson["status"] === "200") {
var data = parsedJson["data"];
return new Dummy.Dummy(id, data["dummy"]["value"], data["dummy2"]["value"], data["dummy3"]["value"]);
}
/* tslint:enable:no-string-literal */
}
});
}
新しいDummyオブジェクトを 'if'チェックの中でロギングしようとしましたが、Dummyオブジェクトを正しく出力するので、' if'の中に入ります。また、私はあなたが提案した理由のために最初にそれをストリングせずに 'body'をパースしようとしましたが、うまくいきませんでした(なぜか分からない)。 – fluffychaos
私は 'request.get'のためにドキュメントをチェックしました。 'json'パラメータを強制的に要求するように強制する機能は、' response'ボディをJSONとして自動的に解析するため、 'var parsedJson = JSON.parse(body);'コードは必要ありません。 = "200" 'である。私の答えをチェックして、さらに詳しい説明をしてください。 – SergeyK
ありがとうございます。私はまだ 'read'関数を呼び出す関数にDummyオブジェクトを実際に戻す方法については混乱しています。私は単純にDummyオブジェクトをparamとして(上記のように)取るコールバック関数を作り、Dummyオブジェクトを返します。その後、関数を 'read'関数を呼び出す関数にパラメータとして渡しました。しかし、関数はまだコールバックを終了する前に戻ります。 – fluffychaos