2017-03-27 10 views
0

私はmeetupsアプリのように反応するネイティブアプリケーションに取り組んでいます。 ここに表示できる独自のnode.jsバックエンドがあります https://github.com/rahullakhaney/meetup/tree/master/meetup-backend 私のアプリケーションでは、データベースからグループを作成しようとしていますが、このエラーが発生する可能性があります "未処理の約束拒否(id:0)オブジェクト」ここ未解決の約束却下(id:0)nullはオブジェクトではありません

は私api.jsが

import axios from 'axios'; 

axios.defaults.baseURL = 'http://localhost:3000/api'; 

const fakeGroupId = '58d64e3a122149dd3cdba5d8'; 

class MeetupApi { 
    constructor() { 
    this.groupId = fakeGroupId; 
    this.path = `/groups/${this.groupId}/meetups`; 
    } 

    async fetchGroupMeetups() { 
    const { data } = await axios.get(this.path); 

    return data.meetups; 
    } 

} 

export { 
    MeetupApi 
}; 

あなたはまた、誰が、なぜ私は、申し訳ありません。このエラーを取得しています説明していただけますhttps://github.com/rahullakhaney/meetup/tree/master/meetup-mobile

で完全なコードを表示することができますファイルですが、私は新しいですネイティブに反応する。

答えて

0

asyncキーワードで宣言されたすべての関数またはメソッドは、約束を返します。その約束は、その関数から何かを返すと解決され、その関数に例外を投げたときには拒否されます。

次のように記述すると、この:

const { data } = await axios.get(this.path); 

その後、本当に起こるかは、あなたが内部の例外として提起されてaxios.get()が、axios.get()によって返されたその約束のすべての拒否によって返された約束に解決コールバックを追加することですfetchGroupMeetups()メソッド。 try/catchを使用しないので、例外が伝播し、おそらく処理しないfetchGroupMeetups()によって返される約束の拒否に変換されます。

x.fetchGroupMeetups(...).catch(err => console.log('Error:', err)); 

または、他のasync関数の内部:

try { 
    x.fetchGroupMeetups(...); 
} catch (err) { 
    console.log('Error:', err); 
} 

もちろん単なる印刷以上の何かをやって、あなたがいずれかのようなものとしてそれを使用する必要があり、その拒絶反応を処理するには

エラー。

この回答を参照、これらの未処理の拒否が何であるかについての詳細を知るために、なぜあなたは常にそれらを扱う必要があります。

TL; DR:に使用未処理の拒否を警告が表示されますが、アプリがクラッシュします。 Hereがその理由です。

関連する問題