setTimeout返回一个承诺

时间:2019-05-19 11:47:00

标签: javascript

我正在创建一个具有2个参数的函数:

  • 参数1:回调函数
  • 参数2:时间x(毫秒)

此函数将在x ms的时间段后调用回调函数并返回promise。

我的代码如下。它只会在1秒后打印“再见”

function doAfter(func, time) {
  var promise = new Promise(function(resolve, reject) {
    setTimeout(function(data) {
      resolve(data);
    }, time);
  });
  return promise;
}

function sayHello() {
  console.log('Hello');
}

function sayGoodbye() {
  console.log('Goodbye');
}

doAfter(sayHello, 1000).then(sayGoodbye);

预期行为:等待1秒钟,然后打印“你好再见”

1 个答案:

答案 0 :(得分:1)

您需要解决func()datasetTimeout中未定义

function doAfter(func, time) {
  var promise = new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve(func());
    }, time);
  });
  return promise;
}

function sayHello() {
  console.log('Hello');
}

function sayGoodbye() {
  console.log('Goodbye');
}

doAfter(sayHello, 3000).then(sayGoodbye);