我对节点有点陌生,对 koa 完全陌生。我正在尝试使用生成器对 API 执行异步 Web 请求,但我不知道如何将所有部分放在一起。
作为说明,我使用的是 bluebird,因为我看到了一些例子,这似乎是一个好主意。如果有一种更简单的方法可以在没有蓝鸟的情况下做我想做的事,那也很好。
在我的模块中:
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}
我知道我的代码到处都是,但我已经研究了几个小时,但我仍然没有接近修复它。
谢谢!