Ich bin etwas neu zu Knoten, und ich bin völlig neu in Koa. Ich versuche, Generatoren zu verwenden, um asynchrone Webanfragen zu einer API zu machen, aber ich kann nicht herausfinden, wie man alle Stücke zusammenfügt.Kann nicht herausfinden, wie yield mit async Anfrage verwenden
Als Anmerkung, ich benutze Bluebird, weil ich sah, dass einige Beispiele das tun, und es schien wie eine gute Idee. Wenn es einen einfacheren Weg gibt, ohne Bluebird zu machen, was ich will, ist das auch völlig in Ordnung.
In meinem Modul:
plugin.searchForItem = function * (name) {
Promise = require('bluebird');
request = Promise.promisifyAll(require('request'));
console.log("making request");
yield request.getAsync('http://apisitegoeshere.com/apicall').then(function * (result) {
var response = result[0];
var body = result[1];
console.log(response.statusCode);
yield response;
});
};
und ich es so nennen:
search.searchForShow = function (name) {
data = this.plugins[0].searchForItem(name);
console.log("search returned: " + data);
console.log("search returned2: " + JSON.stringify(data.next()));
console.log("search returned3: " + JSON.stringify(data.next()));
return data;
};
Wenn ich in meiner Konsole sehen, ich sehe:
search returned: [object Generator]
making request
search returned2: {"value":{"isFulfilled":false,"isRejected":false},"done":false}
search returned3: {"done":true}
Ich weiß, Mein Code ist irgendwie überall, aber ich habe stundenlang daran gearbeitet, und ich bin immer noch nicht näher daran, es zu reparieren.
Danke!
Dank einem Haufen! Das war sehr hilfreich und wirkt wie ein Zauber. Ich habe meinen PromisifyAll-Teil wie vorgeschlagen in eine Init-Datei verschoben. – snollygolly