javascript - 是在里面等待还是在外面期待?
问题描述
有什么区别:
it('should blabla', async () => {
await expect(callThatReturnsAPromise()).toBe(false);
});
和:
it('should blabla', async () => {
expect(await callThatReturnsAPromise()).toBe(false);
});
那么,在 expect 函数的外部还是内部等待?
如果 toBe 内部的调用也返回一个 promise,我应该使用哪个版本呢?
it('should blabla', async () => {
await expect(callThatReturnsAPromise()).toBe(callThatReturnsAPromise2());
});
或者:
it('should blabla', async () => {
expect(await callThatReturnsAPromise()).toBe(await callThatReturnsAPromise2());
});
那么,期望之外的等待会解决所有的承诺,还是我必须在函数内等待它们中的每一个?
好的,我使用以下代码进行了测试:
let a = function() {
console.log('huba');
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(42);
}, 5000);
});
};
let b = function() {
console.log('buba');
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(11);
}, 5000);
});
};
describe('test', function() {
it('blabla', async function() {
await expect(a()).toBe(b());
});
});
并且似乎期望之外的等待等待承诺 a() 和 b() 得到解决。但我不知道为什么。既不期望不返回承诺也不返回。那么为什么我可以在他们之外等待呢?
解决方案
推荐阅读
- amazon-web-services - 如何允许联邦用户访问k8s集群
- javascript - 附加长事件时如何控制滚动行为
- c++ - 为什么 std::weak_ptr
::lock 在这里返回空共享指针? - c# - 工作表导出为 PDF
- scala - Scala:List.forall 使用 while 循环
- webrtc - OperationError:使用 CEFSharp 时无法在“RTCPeerConnection”上执行“createOffer”
- javascript - 使用 RS256 生成的 JWT 能否被 jwt.io 网站解码?
- node.js - SSH2-SFTP-Client 连接错误:没有匹配的 C->S 密码
- java - Java 飞行记录中的读/写计数究竟代表什么?
- flutter - 如何使用 GeoFire 插件在后台更新我的位置