2016-05-13 2 views
0

synchronize.jsを使用して、同期して実行する必要があるいくつかの関数を実行しようとしています。 私はそれについて何かを読んだherehere2番目のステップはファイバー内で決して呼び出されません(synchronize.js)

それを試してみるために、私は出力が

Before 
Outside 
Executing function 1 
After 

しかし、私が得ることはどういうわけか

Before 
Outside 
Executing function 1 

であるべきである

var sync = require('synchronize'); 
var fiber = sync.fiber; 
var await = sync.await; 
var defer = sync.defer; 

function function1(){ 
    console.log("Executing function 1") 
} 

sync.fiber(function() { 
console.log('Before'); 
var step1 = await(setTimeout(function1, 1000, defer())); 
var step2 = console.log('After'); 
}); 

console.log('Outside'); 

ロジックが私に語った次のコードを作成しましたstep2は実行されていないので、なぜ私は理解できません。私は前にこれを試してみてくださいこのプラグインを使用したことがありません

答えて

0

:(コールバックが実行される前に)

var sync = require('synchronize'); 
var fiber = sync.fiber; 
var await = sync.await; 
var defer = sync.defer; 

function function1(callback){ 
    // defer expects this to be asynchronous (so it needs to execute a callback) 
    console.log("Executing function 1") 
    callback(); 
} 

sync.fiber(function() { 
console.log('Before'); 
var step1 = await(setTimeout(function1, 1000, defer())); 
var step2 = console.log('After'); 
}); 

console.log('Outside'); 

は基本的に私は途中で deferを呼んだと思うが、それがハングします。

編集:

私は今deferは、コールバック関数を作成することを実現文書を読んだ後。コールバックが呼び出されることはないため、ハングアップしていることになります。これが動作するかどうか私に教えてください。

+1

ありがとうございます!それは完全に働いた、私は答えを知っている今少し恥ずかしがり屋だが、私は前にそれを得ることができませんでした。私はまだ、ノード内の非同期呼び出しを使って作業することでより良くなる必要があります。 – TomScata

関連する問題