2017-05-16 3 views
0

Ich bin neu in Node.js Programmierung. Ich habe etwas über das Versprechen eines Objekts erfahren. Aber einer meiner Kollegen hatte eine Interviewfrage.Node.js - asynchrone Methode aufrufen, ohne die Verwendung von Drittanbieterbibliotheken in Nodejs zu verwenden

  1. Ohne irgendwelche Dritte Versprechen Bibliotheken verwendet, die in npm (Beispiel Versprechen, drossel) zur Verfügung stehen, muss ich ein Versprechen Funktion implementieren, die dann zurückgibt() und catch() Funktion unten dergleichen. ..

    asyncPromise(), dann() catch()

Zum Beispiel:

function asyncFunction(cb){ 
    //----------- 
    cb(err,data); 
} 

function asyncPromise(){ 
} 

Wir brauchen um diese Funktion eine Funktion wickeln, dass es es als ein Versprechen machen verhalten . Wie können wir dies mit beiden oben genannten Funktionen erreichen, ohne die Bibliotheken von Drittanbietern zu verwenden?

Antwort

0

Versprechen sind in Knoten integriert, und die neuesten Versionen von Knoten haben Unterstützung für Async/Wartefunktionen implementiert. Hier sind zwei Möglichkeiten, wie Sie tun können, was sie wollen. Ich bevorzuge die zweite Methode.

function asyncFunc(){ 
    return new Promise((resolve, reject) => { 
     if(someError){ 
      // triggers .catch callback 
      return reject('There was an error'); 
     } 
     // triggers .then callback 
     return resolve(); 
    }); 
} 

asyncFunc.then(() => { /* do something */ }).catch(e => { // do something }); 

Mit async/erwarten

function asyncFunc(){ 
    return new Promise((resolve, reject) => { resolve() }); 
} 

async function caller(){ 
    let dataFromPromise; 
    try{ 
     dataFromPromise = await asyncFunc(); 
    } catch(e){ 
     // do something with error 
    } 
    // do something with dataFromPromise 
} 
+0

Ich frage mich, ob die Interviewfrage wurde geschrieben, bevor Promises nativer waren NodeJS: p –

Verwandte Themen