美文网首页
Async/await

Async/await

作者: 在下高姓 | 来源:发表于2020-09-21 23:26 被阅读0次

    标签: Async/await


    正文

    Async/await 是以更舒适的方式使用 promise 的一种特殊语法

    函数前面的 “async” 这个单词表达了一个简单的事情:即这个函数总是返回一个 promise。
    async function f() {
      return 1;
    }
    
    f().then(alert); // 1
    
    Await:
    1.只在 async 函数内工作
    2.不能在普通函数中使用 await
    3.await 不能在顶层代码运行
    
    async function f() {
      let promise = new Promise((resolve, reject) => {
        setTimeout(() => resolve("done!"), 1000)
      });
      
      let result = await promise; // 等待,直到 promise resolve (*)
      alert(result); // "done!"
    }
    
    f();
    
    promise 可能需要一点时间后才 reject。在这种情况下,在 await 抛出(throw)一个 error 之前会有一个延时。
    
    async function f() {
    
      try {
        let response = await fetch('http://no-such-url');
      } catch(err) {
        alert(err); // TypeError: failed to fetch
      }
    }
    
    f();
    
    如果我们没有 try..catch,那么由异步函数 f() 的调用生成的 promise 将变为 rejected。我们可以在函数调用后面添加 .catch 来处理这个 error:
    
    async function f() {
      let response = await fetch('http://no-such-url');
    }
    
    // f() 变成了一个 rejected 的 promise
    f().catch(alert); // TypeError: failed to fetch // (*)
    
    
    
    有一个“普通”函数。如何在这个函数中调用 async 
    async function wait() {
      await new Promise(resolve => setTimeout(resolve, 1000));
    
      return 10;
    }
    
    function f() {
      // 1 秒后显示 10
      wait().then(result => alert(result));
    }
    
    f();
    
    

    相关文章

      网友评论

          本文标题:Async/await

          本文链接:https://www.haomeiwen.com/subject/wvhiyktx.html