prmoise 返回遇到个问题

new Promise 如何 return Promise

1
2
3
4
5
6
test('book>>saveBook', () => {
expect.assertions(1);
return spiderService.getBookBasicInfo().then(data => {
expect(data).not.toBeNull();
});
});

在用 Jest 时候,发现无论怎么设置 timeout 总是超时,然后发现如下代码是有问题的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
getBookBasicInfo: function () {
// create new Promise
return new Promise((resolve, reject) => {
spider
.end((err, res) => {
if (!err) {
// some code
...
// return Promise,这段有问题
return bookService.saveBook(books);
} else {
reject(err);
}
});
});
}

其实应该把 bookService.saveBook(books) 获取到 promise 的 resolve 和 reject,给新的 Promise 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
getBookBasicInfo: function () {
return new Promise((resolve, reject) => {
spider
.end((err, res) => {
if (!err) {
// some code
...
// here is right
bookService.saveBook(books).then(data => {
resolve(data);
}).catch(err => {
reject(err);
})
} else {
logger.error(err);
reject(err);
}
});
});
}
【长按关注】看看↓↓↓?
Eminoda wechat
【前端雨爸】分享前端技术实践,持续输出前端技术文章
欢迎留言,评论交流,一起讨论前端问题
📢 因为是开源博客,为避免 Gitalk授权 带来的 安全风险,也可访问