저는 노드에 다소 익숙하지 않으며 완전히 koa에 익숙합니다. 생성기를 사용하여 비동기 웹 요청을 API에 보내려고하지만 모든 조각을 함께 모으는 방법을 알 수 없습니다.비동기 요청을 사용하여 yield를 사용하는 방법을 알아낼 수 없습니다.
필자는 블루 버드를 사용하고 있는데, 몇 가지 예를 보았 기 때문에 좋은 생각처럼 보였습니다. 블루 버드없이 원하는 것을 할 수있는 더 쉬운 방법이 있다면 그건 완전히 괜찮아요. 내 모듈에서
:
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;
});
};
을 내가 이런 식으로 전화 해요 :
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;
};
내 콘솔에서 볼 때, 나는 참조 :
search returned: [object Generator]
making request
search returned2: {"value":{"isFulfilled":false,"isRejected":false},"done":false}
search returned3: {"done":true}
내가 아는 내 코드는 온통 일종이지만, 몇 시간 씩 작업 해 왔지만 아직 해결하지 못했습니다.
감사합니다.
감사 무리 : KOA에서
당신이 뭔가를 할 것입니다! 그것은 매우 도움이되었고, 매력처럼 작동합니다. Promisify All 부분을 제안 된대로 init 파일로 옮겼습니다. – snollygolly