2016-05-23 6 views
1

Ich habe eine native javascript Versprechen Kette, die ein wenig wie folgt aussieht:Nutzen Konsolenprotokollierung in nativer JavaScript Versprechen Kette

function chain() { 
    promiseFunction1().then(function(data) { 

    console.log("some message"); 
    return promiseFunction2(); 

    }).then(function(data) { 

    console.log("some message"); 
    return promiseFunction3(); 

    }).then(function(data) { 

    console.log("some message"); 
    return promiseFunction4(); 

    }).catch(function(error) { 
    console.error(error.stack); 
    }); 

} 

die Versprechen Funktionen ein wenig würde wie folgt aussehen:

function promiseFunction() { 
    return new Promise(function(resolve,reject) { 
    someCallbackfunction(arg, function(err, data){ 
     if (err) { 
      return reject(err); 
     } 
     console.log("some message"); 
     return resolve(data); 
    }); 
    }); 
} 

Meine Code scheint gut zu lösen von dem, was ich sagen kann (keine Fehler und ich kann aus Terminal-Feedback sagen, dass die Operationen, die ich brauchte, laufen), aber egal was ich versuche zu versuchen, kann ich nicht für das Leben von mir scheinen irgendeine Form der Konsole protokollieren.

1) Warum drucken diese Anweisungen nicht wie ich sie erwarte?

2) Wie kann ich meine ausführliche Ausgabe wiederherstellen?

+0

Erhalten Sie die "einige Nachricht" aus der Callback-Funktion? Wenn nicht, dann ist 'someCallbackFunction' schuld. – Bergi

+0

Versuchen Sie 'console.error (" Fehler ", Fehler)'. Es kann sein, dass 'error.stack' nicht definiert ist, auf was auch immer die Callback-basierte Funktion zurückweist, und Sie erhalten deswegen keine Logs. – Bergi

+0

@Bergi Ich versuchte mit 'console.error (" Fehler ", Fehler)' ohne Erfolg. Auch die einige Nachricht wird nicht aufgerufen, innerhalb der Versprechen Funktionen oder der SomeCallback. Ich weiß für eine Tatsache, dass die ersten beiden einige Versprechen Funktionen richtig lösen, da ich die Nachrichten für ihre Operationen in 'journalctl' – MSB

Antwort

-1

Es stellte sich heraus, dass das Problem am Ende äußerlich war. Irgendwo in meiner Versprechenskette habe ich eine externe Bibliothek mit einer Callback-Funktion aufgerufen, aber die Bibliothek hat nie geantwortet, was dazu führte, dass meine Kette für immer wartete.

Wenn Sie etwas ähnliches erleben, empfehle ich Ihnen, alle Funktionen in der Kette für ein ähnliches Ereignis zu überprüfen.

Eine schnelle Möglichkeit, dies zu debuggen, könnte darin bestehen, ein Zeitlimit in jede Versprechungsfunktion in der Kette zu setzen, die es nach einer gewissen Zeit auflöst, so dass Sie zumindest Ihre Protokollierungsergebnisse erhalten, ohne für immer im Dunkeln zu stolpern .