javascript - 从 setTimeout 获取返回值

标签 javascript return settimeout return-value

<分区>

我只想从 setTimeout 获取返回值,但我得到的是函数的完整文本格式?

function x () {
    setTimeout(y = function () {
        return 'done';
    }, 1000);
    return y;
}

console.log(x());

最佳答案

您需要为此使用 Promises。他们是available in ES6但可以填充quite easily :

function x() {
   return new Promise((resolve, reject) => {
     setTimeout(() => {
       resolve('done!');
     });
   });
}

x().then((done) => {
  console.log(done); // --> 'done!'
});

在 ES2017 中使用 async/await 如果在 async 函数中会变得更好:

async function() {
  const result = await x();
  console.log(result); // --> 'done!';
}

关于javascript - 从 setTimeout 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24928846/

相关文章:

javascript - 从 ajax 调用返回一个值到父函数

未检查 C++ 返回语句

javascript - settimeout 没有被调用?

javascript - 根据行索引数组获取行的 jQuery 集合

javascript - 当我们选择表单选择框中的相同选项时如何显示警报

c++ - 修复返回问题。警告 : control reaches end of non-void function in C++

javascript - 如何在循环中使用setTimeout()并维护变量值?

javascript - 在 JS 参数中添加引号

javascript - 获取 JavaScript 中 primefaces 数据表选中复选框的计数

javascript - 即使我使用 setTimeout,Angular 5 也不会在长时间操作期间检测到变化