2017-11-21 4 views
0

Ich versuche, eine Loopback-Callback-Funktion zu versprechen, aber ich bin nicht in der Lage, es zu konvertieren. Der Code für istConvert Call zurück zu Versprechen

let ds = app.datasources.ace_db 
ds.connector.execute(sql,[],(err, data) => { 
    console.log('datalogger', data); 
}); 

Gibt es eine Methode, um diesen Frieden des Codes zu versprechen?

+2

Zeigen Sie, was Sie trie d das funktioniert nicht – charlietfl

+0

möglich duplizieren. Überprüfen Sie diese Frage https://StackOverflow.com/Questions/28432401/Replacing-Callbacks-with-Promises-in-Node-JS – vader

+0

Ähnliche [github Problem] (https://github.com/strongloop/loopback/issues/418 # issue-38984704) über Promise-Unterstützung in LoopBack. –

Antwort

2

Was möchten Sie tun, ist Ihre ds.connector.execute in einer Promise wickeln, und zurück, dass Promise wie so:

const dsConnectorPromise = function(sql, arr) { 

    let p = new Promise((resolve, reject) => { 

     ds.connector.execute(sql, arr, (err, data) => { 

      if(err) reject(err); 
      else resolve(data); 
     }); 
    }); 

    return p; // return promise 
}; 

Sie können dann dsConnectorPromise verwenden gehen in etwa so:

dsConnectorPromise(sql, []).then(data => { 

    console.log(data); 

}).catch(err => console.log(err)); 
+0

oder Sie können einfach 'neue Versprechen ((auflösen, ablehnen) ...' ohne Zuordnung zu einem 'p' Variable überhaupt –