Jestem trochę nowy w węźle, a ja jestem zupełnie nowy w koa. Próbuję użyć generatorów do asynchronizowania żądań internetowych z interfejsem API, ale nie mogę wymyślić, jak połączyć wszystkie elementy.Nie mogę wymyślić, jak wykorzystać wydajność z prośbą asynchroniczną
Na marginesie, używam bluebirda, ponieważ widziałem kilka przykładów, i to wyglądało na dobry pomysł. Jeśli jest łatwiejszy sposób na zrobienie tego, co chcę bez bluebirda, to też jest w porządku.
W moim module:
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;
});
};
i dzwonię to tak:
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;
};
Kiedy patrzę w mojej konsoli, widzę:
search returned: [object Generator]
making request
search returned2: {"value":{"isFulfilled":false,"isRejected":false},"done":false}
search returned3: {"done":true}
wiem mój kod jest wszędzie, ale pracowałem nad nim przez wiele godzin i nadal nie jestem bliżej do naprawienia tego.
Dzięki!
Dzięki kilka! To było bardzo pomocne i działa jak urok. Przeniosłem moją promisifyAll część do pliku init zgodnie z sugestią. – snollygolly