2017-04-21 14 views
1

とファイバ内で実行私は私のコードループ流星はsetTimeoutを

Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.

の利用睡眠をしようとしたとき、私はこのエラーを持っています。同じファイルで

fs.readdir(directory, (err, files) => { 
     if (err) { 
     console.log("error get file"); 
     } 

     if(files.length > 0) { 
     for (var i = 0; i <files.length; i++) { 
      Fiber(function() 
      { 
      setTimeout(function() 
      { 
       Meteor.call('mymethodfile', files[i]); 
      }, 1000); 
      }).run(); 
     } 
     } 
    }); 

Meteor.methods({ 
    'mymethodfile':function(arch) 
    { 
     var file=arch; 
     console.log(file); 
     getdata(file); 
    } 
}) 

助けてください

答えて

0

あなたがwrにしたいならAP通信は非同期関数、あなたはMeteor async wrap方法やmeteorhacks:asyncパッケージ、あなたはここで関連の答えを見ることができるはずです。https://docs.meteor.com/api/timers.html

:あなたはのsetTimeoutを使用したい場合は Meteor: Proper use of Meteor.wrapAsync on server

、あなたの代わりにMeteor.setTimeoutメソッドを使用する必要があります