2017-05-31 12 views
0

私は呼び出し元のクラスにresponseDataを返さなければならないログインスクリプトを作成しています。問題は、返された結果が絶えず未定義になっていることです。私がコンソールにresponseDataを記録すると、それはうまく表示されます。私が気づいたことの1つは、コンソールのコンソールログresponseDataの前に未定義が表示されることがあることです。ここでfetch()の戻り値がネイティブで未定義

module.exports = { 

    loginUser: function(emailAddress = "", password = "") { 

     var url= "URL_HERE"; 

     console.log(url); 

     fetch(url, {method: "GET"}) 
      .then((response) => response.json()) 
      .then((responseData) => 
     { 

      console.log(responseData); 
      return responseData; 


     }) 
     .done(() => { 

     }); 

    }, 

    otherMethod: function() {} 

} 

は)私はあなたがloginUser(の戻り値を意味疑う機能が

var dataLogin = require('../../data/login.js'); 
var result = dataLogin.loginUser(this.state.formInputEmail, this.state.formInputPassword); 
+0

可能な複製(HTTPS:/ /stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

+1

loginUserメソッドにコールバックメソッドを渡し、応答を受け取ったときにメソッドを呼び出します。 –

答えて

1

と呼ばれている方法の例です。それは何も返さない。それは何かを返す.then()に渡された内側のラムダです。

約束としてloginUserを使用し、その後loginUser()から全体をフェッチ約束を戻してください、そして:

... 
return fetch(... 
... 
loginUser().then(responseData => useResponseDataForSomething(responseData) 
[私は非同期呼び出しからの応答を返すにはどうしますか?]の
関連する問題