Promise改写的异步回调函数为何测试超时?
在koa2使用了其他模块,是异步的方法,把他用promise包装了一下,结果出了问题
import Koa from "koa";
import Router from "koa-router";
import request from "request";
import supertest from "supertest";
const app = new Koa();
const router = new Router();
const client = supertest.agent(app.listen(3000));
router
.get("/send", async (ctx, next)=> {
let params = {...}
let aa = await Prequest(params);
console.log(aa);//不打印
ctx.status = 200;
})
app
.use(router.routes())
.use(router.allowedMethods());
//测试错误 超时了
describe("test", function () {
this.timeout(10000);
it("send", function (done) {
client
.get('/send')
.expect(200,done)
});
})
function Prequest(params) {
return new Promise(function (resolve, reject) {
request(params, function (error, response, body){
if (error || !body || body.code != 1) {
reject(error);
}
resolve(body);//并没有resolve出去
})
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
koa
没用过,一直觉得这种古怪的利用generator
做中间件的手段太过“引人入胜”,实在不敢冒用。(可能我太low了)首先,(由于不懂
koa
),不清楚如下设置status
的方法是否正确:其次,测试可以这么改改试试:
补充:
我看
koa-router 7.x
配合koa 2.x
才支持async/await
语法,你确定版本都用对了吧?对照官方的例子看看吧supports promises for async/await
再次补充:
的确,如@wusisu 所说,你的
request
写的有点问题,应该改改:我是koa@2的老司机了。
不过问题不在koa上,而是那个Promise没有返回。
我也同样没有看懂request这个函数的使用,建议在request的回调中,打印一下看看。