私はどのように誤解していると思いますかQは約束します。私は、次のものが始まる前に解決するという、私の最初の約束が欲しいですが、それは起こっていません。ここに私のコードは次のとおりです。Qの約束を伴うシリアル実行
var Q = require('q');
function doWork(taskName) {
var deferred = Q.defer();
console.log('starting', taskName);
setTimeout(function() {
console.log('done with', taskName);
deferred.resolve();
});
return deferred.promise;
}
doWork('task one')
.then(doWork('task two'))
.then(function() { console.log('all done'); });
このコードが生成します。
$ node test.js
starting task one
starting task two
done with task one
done with task two
all done
を私はそれが生成することを望んでいるだろう:
$ node test.js
starting task one
done with task one
starting task two
done with task two
all done
私が間違って何をしているのですか?