私は自分で約束を勉強しようとしています。これは私が書いたコードです -qライブラリを使用しているときにNodejsが動作しないことを約束します。
var Q = require('q');
var promise = Q.fcall(function() {
// I expect this time out to delay returning the response 7.
setTimeout(console.log('hi'), 1000);
return 7;
});
promise.then(function(contents) {
console.log(contents);
});
// Added this timeout so that the javascript execution context(node ex.js) remains alive before the code in the then block is resolved.
setTimeout(function(){console.log('bye');}, 1000);
これは内容を印刷していません。私はちょうど Cを取得:私は得るために期待していた\ノード\ Ex_Files_UaR_Node \最初>ノードexample3.js ハイテク さようなら
- ハイテクさようなら
は何がある場合は私に知らせてください非常に私が欠けていることははっきりと分かる。
EDIT:以下のコードは約束を解決
P.S - Q.fcallでのsetTimeoutを追加することの背後にある基本的な考え方は、約束の実行を遅らせることだったしかし
var Q = require('q');
var promise = Q.fcall(function() {
setTimeout(function(){console.log('hi');}, 1000);
return 7;
});
promise.then(function(contents) {
console.log(contents);
});
setTimeout(function(){console.log('bye');}, 1000);
。どのようにそれを行うにはどのようなアイデア?そこ
これは非常に多くのレベルで間違っています。あなたは 'setTimeout'を実行することを正確に期待しましたか? – Bergi
私は、プロミスが解決されるまでに少し時間がかかるように、いくつかの遅延を追加するためにsetTimeOutを追加しました。しかし、それが解決されていないので、約束が解決される前に執行自体が終わったと思っています。それで、私は最後に2回目のタイムアウトを追加したので、解決する約束の時間を購入しました。 – user3276247
それで、どのログの間に1秒待つと予想されますか? – Bergi