ES6承诺超时间隔

the*_*cat 5 javascript node.js promise

我正在尝试将我的一些代码转换为Promise,但是我不知道如何在Promise中链接一个新的Promise。

我的promise函数应该每隔一秒左右检查一次数组的内容,并且其中是否应该解析任何项目。否则,应等待1秒钟,然后再次检查,依此类推。

function get(){
    return new Promise((resolve) => {

      if(c.length > 0){
        resolve(c.shift());

      }else{
        setTimeout(get.bind(this), 1000);
      }

    });

}


let c = [];

setTimeout(function(){
  c.push('test');
}, 2000);
Run Code Online (Sandbox Code Playgroud)

这就是我期望我的get()承诺函数正常工作的方式,它应该在最多2或3秒后打印“ test”:

get().then((value) => {
  console.log(value);
});
Run Code Online (Sandbox Code Playgroud)

显然它不起作用,什么也没印刷

Abh*_*ain -1

用于setInterval每秒检查一次。运行这个脚本就可以理解了。

let c = [];

function get(){
    return new Promise((resolve) => {

      var i = setInterval(function(){
        if(c.length > 0){
          resolve(c.shift());
          clearInterval(i);
        }
      }, 1000);

    });
}



setTimeout(function(){
  c.push('test');
}, 2000);

get().then((value) => {
  console.log(value);
});
Run Code Online (Sandbox Code Playgroud)