2017-10-27 16 views
0

関数内で2つのサービス呼び出しの応答を取得しようとしています。非同期と待機がこの目的を解決し、以下で試したことを知りました。ここでは内部非同期関数ex - 私はユーザー、会社のエンドポイントとコンソールログに完全なを表示している呼び出しているが、非同期関数を呼び出すことによって同じ値を取得するプロミス保留を与えている間。私は2つのオプションを試しました。1.単に非同期関数を呼び出すことによって - プロミス・ペンディング2.を与えて、プレフィックスを付けて呼び出します - 待つことは予約語です。async関数からの戻り値の取得

const service = { 
     getUsers:() => axios.get(`http://localhost:3000/users`), 
     getCompanies:() => axios.get('http://localhost:3000/companies') 
     }; 

     let ex = async() => { 
     let users = {}; 
     let companies = {}; 
     try { 
      users = await service.getUsers() 
      companies = await service.getCompanies() 

      console.log('Example ', { 
      users: users.data, 
      companies: companies.data 
      }) 

     } catch (err) { 
      console.log(err); 
     } 
     return [{ users, companies}]; 
     }; 
     //let resp = await ex(); - giving await is a reserved word 
     // let resp = ex(); - giving Promise is pending.. 
     console.log(resp); 
+0

私はそれを持っています。非同期関数から、Promiseが返され、.thenまたは.catchによって再度チェックする必要があります。 –

答えて

0

...私はこのからの応答をキャプチャする方法を教えてくださいすべてのasync機能が常に約束を返します。何も返さない場合、関数はundefinedの約束を返します。あなたが返すものは約束に包まれ、awaitに電話をかけるか、またはthenに電話してその中の値にアクセスしてください。

resp.then(console.log) 
関連する問題