第二步永远不会在光纤内部被调用(synchronize.js)

2nd step never gets called inside fiber (synchronize.js)

我正在尝试使用 synchronize.js 到 运行 一些必须同步执行的功能。 我读过一些关于它的文章 here and here

为了尝试一下,我创建了以下代码

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');

逻辑告诉我输出应该是

Before
Outside
Executing function 1
After

但我得到的是

Before
Outside
Executing function 1

不知何故,step2 没有被执行,我不明白为什么。

我以前从未使用过这个插件,但试试这个:

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 创建了一个回调函数。这意味着它挂起,因为它创建的回调从未被调用。让我知道这是否有效。