2017-02-22 3 views
1

Ich benutze React Native Pepperoni Starter Kit. Ich benutze eine der Funktionen post, um Daten vom Server zu holen. Immer wenn ich den Aufruf tätige, scheitert die API wegen Zeitüberschreitung, aber der Server empfängt den Anruf. Der einzige Client zeigt, dass er fehlgeschlagen ist.API Timeout auf React Native Pepperoni Starter Kit

onboardingState.js

export function validatePhone(phoneNumber){ 
    return dispatch => { 
    post('/api/users/register',{ 
     number : phoneNumber, 
     deviceInfo : {} 
    },false).then((res)=>{ 
     console.log('POST SUCCESS'); 
     console.log(res); 
    }).catch((error)=>{ 
     console.log('POST ERROR'); 
     console.log(error); 
    }); 
    } 
} 

Datei Ich verwende den Anruf zu tätigen.

+0

Ich denke, Sie fehlen die URL. Sie verwenden als URL ''/ api/users/register'', ich denke, Sie müssen als URL so etwas wie' http: // ipadresse: port/api/users/register' verwenden. Wie lautet die API-URL, die Sie erreichen möchten? –

+0

Ich habe die Basis-URL vorher festgelegt. Die End-URL ist korrekt und der Server empfängt die Anfrage. –

+0

Angenommen, ich würde sagen, dass Sie dann den Reject-Teil vermissen. Es sollte '.then ((ok_resp) => {}, (error_resp) => {/ * Versprechen wurde abgelehnt * /})'. Post muss versuchen, das Versprechen abzulehnen, aber Sie haben den Rückruf nicht zurückgewiesen. –

Antwort

1

Ich denke, Sie vermissen die Ablehnung Rückruf.

Try this:

export function validatePhone(phoneNumber){ 
    return dispatch => { 
    post('/api/users/register',{ 
     number : phoneNumber, 
     deviceInfo : {} 
    }, false) 
    .then((res)=>{ 
     console.log('POST SUCCESS'); 
     console.log(res); 
    }, (cause) => { 
     console.log('POST REJECTED'); 
     console.log(cause); 
    }) 
    .catch((error)=>{ 
     console.log('POST ERROR'); 
     console.log(error); 
    }); 
    } 
} 

Lassen Sie mich wissen, ob es funktioniert. Es gibt nicht zu viele Informationen, aber es scheint der Mangel an Zurückweisung Rückruf verursacht den Fehler. Ich meine, das Fehlen eines Zurückweisungsrückrufs verhindert, dass Sie den ursprünglichen Fehler erkennen, den Sie erhalten.

Sie müssen sicherstellen, dass der Server korrekt reagiert. Ein Szenario könnte sein, dass Ihr Server die Anfrage empfängt, aber nicht die Antwort an den Client sendet. Hast du es überprüft?

In Api.js ist ein Zeitlimit von 6 Sekunden voreingestellt und es scheint nicht möglich zu sein, es zu ändern. Überprüfen 8. Zeile in api.js, werden Sie sehen:

const TIMEOUT = 6000; 

Betrachten wir ein anderes lib, um mit Ihren Informationen vom Server wie fetch oder ändern, indem Sie Ihre eigenen api.js zu holen, dass TIMEOUT größer einzustellen.

+0

Ich benutzte diesen Code und ging zu 'POST REJECTED' und Timeout-Fehler. Der Server antwortet korrekt und sendet OTP. –

+0

Aber was haben Sie bei abgelehntem Rückruf gesehen? Was hat die Sache gesagt? –

+0

'Ursache' ist Timeout. –

Verwandte Themen