qを見つけたとき、その説明で見つけた、そのようなデモコードがあります:
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4) {
// Do something with value4
console.log("finised: " + value4)
});
});
});
});
と
Q.fcall(step1)
.then(step2)
.then(step3)
.then(step4)
.then(function (value4) {
// Do something with value4
console.log("finished in q: " +value4);
}, function (error) {
// Handle any error from step1 through step4
console.log("err: " + err);
})
.end();
step1/step2/step3/step4
これらの2つのテストに適合するように4つの関数をどのように定義するのでしょうか。
私は試した:
function step1(callback) { console.log("step1"); return "abc"; };
function step2(str, callback) { console.log("step2"); return str; };
function step3(str, callback) { console.log("step3"); return str; };
function step4(str, callback) { console.log("step4"); return str; };
と
function step1(callback) { console.log("step1"); return callback("abc"); };
function step2(str, callback) { console.log("step2"); return callback(str); };
function step3(str, callback) { console.log("step3"); return callback(str); };
function step4(str, callback) { console.log("step4"); return callback(str); };
そしてそれが印刷されることを願っています:
step1
step2
step3
step4
finised: abc
step1
step2
step3
step4
finised in q: abc
しかし、どちらも機能しません。