Sono un po 'nuovo al nodo e sono completamente nuovo di Koa. Sto cercando di usare i generatori per fare richieste web asincrone a un'API, ma non riesco a capire come mettere insieme tutti i pezzi.Non riesco a capire come utilizzare la resa con richiesta asincrona
Come nota, sto usando bluebird perché ho visto alcuni esempi farlo e mi è sembrata una buona idea. Se c'è un modo più semplice per fare ciò che voglio senza bluebird, va benissimo anche questo.
Nel mio modulo:
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;
});
};
e sto chiamando in questo modo:
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;
};
Quando guardo nel mio console, vedo:
search returned: [object Generator]
making request
search returned2: {"value":{"isFulfilled":false,"isRejected":false},"done":false}
search returned3: {"done":true}
lo so il mio codice è un po 'dappertutto, ma ci ho lavorato per ore e non sono ancora più vicino a risolverlo.
Grazie!
Grazie un mazzo! È stato molto utile e funziona come un fascino. Ho spostato la mia parte promisifyAll in un file di init come suggerito. – snollygolly