Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript异步/等待问题:无法询问程序为什么不返回任何错误_Javascript_Async Await_Assert_Assertion - Fatal编程技术网

Javascript异步/等待问题:无法询问程序为什么不返回任何错误

Javascript异步/等待问题:无法询问程序为什么不返回任何错误,javascript,async-await,assert,assertion,Javascript,Async Await,Assert,Assertion,请参阅函数 async function dq(isOk){ if(isOk) {return "OK";} else {throw new Error("not OK");} } 什么断言能够准确地测试上述代码: assert(等待dq(true),'OK') 断言(wait(dq(true),'notok') assert(等待dq(true),'notok') assert(dq(true),'OK') 对于所有4个选项,我在开发控制台中都没有定

请参阅函数

async function dq(isOk){
if(isOk) {return "OK";}
else {throw new Error("not OK");}
} 
什么断言能够准确地测试上述代码:

  • assert(等待dq(true),'OK')
  • 断言(wait(dq(true),'notok')
  • assert(等待dq(true),'notok')
  • assert(dq(true),'OK')
    对于所有4个选项,我在开发控制台中都没有定义,即使是选项2,其中await()从来都不是函数。

    如果承诺正常解析,那么await promise将返回结果。但是在拒绝的情况下,它抛出错误,就像在那一行有一个throw语句一样

    async function f() {
      await Promise.reject(new Error("Whoops!"));
    }
    
    在实际情况下,承诺可能需要一段时间才能被拒绝。在这种情况下,等待抛出错误之前会有一个延迟。 我们可以使用try..catch捕获该错误,方法与常规抛出相同:

    async function f() {
      try {
        let response = await fetch('http://no-such-url');
      } catch(err) {
        alert(err); // TypeError: failed to fetch
      }
    }
    f();
    
    如果我们忘记在那里添加.catch,那么我们会得到一个未处理的承诺错误(可在控制台中查看)。我们可以使用全局unhandledrejection事件处理程序捕获此类错误


    参考。

    尝试在异步函数中使用它
    (async()=>{console.assert((wait dq(true));})(
    你好,谢谢你的消息,我理解你的观点,但是上面的异步方法dq没有与之相关的承诺,所以在这种情况下,我正在检查行为。我可以保证第四个选项是不正确的,因为它将在异步函数dq之前触发