我正在重构我使用Mocha测试的代码,还有一段我不太了解的代码。
Test.js
step(`Some description, blah blah blah.`, () => new Promise(function(resolve, reject) {
let temp = myObject.recursiveMethod();
console.log(temp);
resolve(temp);
}));
MyObject'方法
async recursiveMethod() {
//refactored alot of promises into awaits
await doStuff();
if(someCalculation()) {
await cleanUp();
return this.recursiveMethod();
}
},
当执行这样的代码时,一切都很好,但是我想在方法调用中摆脱RETURN - 最后,对promise的函数调用无论如何都会变得不确定,对吧?不幸的是,在这种情况下,测试步骤终止。 可能有用的是,在返回的情况下,控制台输出一个在重复发生时等待的承诺,在解决之后,如果没有返回,则立即解决承诺。
有人可以解释我的区别吗?即使没有承诺,如果不执行最后一条指令,该函数也不应该完成,是吗?
EDIT。 我已经更改了代码以删除多余的承诺,这在以前我认为是必要的。现在测试看起来如下:
step(`Some description, blah blah blah.`, async() => await myObject.recursiveMethod());
有趣的是,我必须在lambda中包装函数调用,尽管该方法本身就是异步的。 无论如何,我仍然不明白如何删除RETURN关键字(在任何情况下都不返回任何值)会影响代码执行,这是不同的。