如何使用wait.for?

时间:2016-12-20 04:09:39

标签: javascript node.js asynchronous synchronous

var blah = require('wait.for');
var wait = require('wait.for/parallel-tests');

function  testFunction(){
  console.log('fiber start');
  wait.miliseconds(10*1000);
  console.log('fiber end');
};

console.log('app start');
blah.launchFiber(testFunction);
console.log('after launch');

当我尝试运行上面的代码时,我得到以下输出

  

app start
      光纤启动
      Z:\ nodeplayground \ node_modules \ wait.for \ waitfor.js:15
      Fiber(function(){fn.apply(null,newargs)})。run(); //推出新纤维,
      用args调用fn,this = null(strict)
                                                    ^
      TypeError:wait.miliseconds不是函数
      在testFunction(Z:\ nodeplayground \ index.js:8:10)
      在Z:\ nodeplayground \ node_modules \ wait.for \ waitfor.js:15:31

我做错了什么?。

我想要实现的主要功能如下

function testFunction2(){
   function Innerfunction(){
      setTimeout(function(){
         console.log("hello");
      },5000);
      console.log("After setTimeout")
  }
}

我希望上面的代码等待5秒并打印“hello”,之后“after setTimeout”

1 个答案:

答案 0 :(得分:0)

您尝试导入模块milliseconds未导出的wait.for/parallel-tests方法。

您必须在主文件中声明wait.milliseconds函数(或将其包装在模块中以便重用)。

var wait = require('wait.for');

wait.timeout_callback = function(ms,callback){
  setTimeout(callback,ms); //call callback(null,null) in ms miliseconds
}

wait.miliseconds = function(ms){
  wait.for(wait.timeout_callback,ms);
}    

function testFunction(){
  console.log('fiber start');
  wait.miliseconds(10*1000);
  console.log('fiber end');
};

console.log('app start');
wait.launchFiber(testFunction);
console.log('after launch');