如何使用Java Promise在一定间隔后打印日志

时间:2019-07-20 00:01:05

标签: javascript

我在promise方法中使用了setTimeout,并期望它应该在延迟后一次接一个地打印我的日志。我确实看到日志正在同时打印。这是尝试过的。

function content(value) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      resolve(value);
    }, 2000);
  });
}

function messages(value) {
  var abc = content(value);
  abc.then(function (value) {
    console.log(value);
  });
}

messages('hurray 1');
messages('hurray 2');

1 个答案:

答案 0 :(得分:2)

这样想:您的承诺是一个接一个地创建的,因此控制台日志不会仅被您指定的延迟抵消,而不会因创建这些承诺而延迟。因此,这些日志似乎会同时打印。

要获得所需的结果,您必须编辑代码以链接这些承诺,以便在上一个解决方案之后创建每个承诺:

function content(value){
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log(value);
      resolve(value);
    }, 2000);
  });
}


content('hurray 1').then(() => content("hurray 2")).then(() => content("hurray 3")); //& so on...

现在,每个记录都会按照您在content()中指定的时间间隔进行记录。我使用了箭头功能以提高可读性,但是如果您愿意,可以随意用老式的方式替换它们。