JavaScript Promise.resolve(带/不带返回的递归函数)

时间:2017-10-31 15:30:24

标签: javascript promise mocha

我正在重构我使用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关键字(在任何情况下都不返回任何值)会影响代码执行,这是不同的。

0 个答案:

没有答案