javascript - JavaScript 中的简单异步函数

标签 javascript async-await

我正在使用 async/await 并使用下面的代码,在响应 const 中的 setTimeout 在 5 秒后完成之前,响应不应该为空或 null 吗?响应不应该返回 xyz 而不是 1 吗?

async function test() {
  try {
    const response = await setTimeout(
      function() { 
        const obj = {};
        obj.text = "xyz";
        console.log('should console log after 5 seconds')
        return obj;
      }, 
    5000)

    if (response) {
      console.log(`response is ${response}`)
      console.log(`response.text is ${response.text}`)
    }
  } 
  catch(err) {
    console.log(err)
  }
}

test();

最佳答案

你必须放置一个 Promise 来等待 setTimeout()。

async function test() {
try {
    const response = await new Promise((resolve) => {
        setTimeout(
            function() {
                const obj = {};
                obj.text = "xyz";
                console.log('should console log after 5 seconds')
                return resolve(obj);
            },
            5000)
    });

    if (response) {
        console.log(`response is ${response}`)
        console.log(`response.text is ${response.text}`)
    }
}
catch(err) {
    console.log(err)
}
}

test();

关于javascript - JavaScript 中的简单异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51833668/

相关文章:

javascript - 是否有库或 Web 服务可以为我的 JavaScript 应用程序提供夏令时数据?

javascript - Kendo UI ,自动完成最大容量为 1000。我想增加这个

angular - 如何从 AngularFireAuth 获取 signInAnonymously 以返回 promise

c# - 在 .NET 中使用 ConfigureAwait

javascript - 如何同步上传图片?

c# - 无法转换 lambda 表达式(异步/等待)

javascript - DOM 的点击事件不起作用,而异步函数正在文档就绪中执行

javascript - 如何获取select2 :unselect的值

javascript - 连接 2 个相似对象 javaScript 的所有属性

javascript - 为什么异步等待循环将其结果返回到原始数组?