私は約束を使ってノードモジュールを書く必要があります。だから3つの異なる約束があります。結果は3人すべてが解決したときにのみ戻されます。私はいくつかのコードを書いた。現在、結果は未定義となります。これを解決するために何が追加できるか教えてください。約束の結果を返す方法は?
これは、ノードモジュールのコードである - これは、呼び出し元のコードである
var exports = module.exports = {};
exports.getData = function() {
var Q = require('q');
var result = 0;
// Promise 1
var deferred = Q.defer();
var promise1 = Q.fcall(function() {
setTimeout(function(){console.log('hi');deferred.resolve(9);}, 1000);
return deferred.promise;
});
promise1.then(function(contents) {
result = result + contents;
console.log(contents);
});
// promise 2
var deferred2 = Q.defer();
var promise2 = Q.fcall(function() {
setTimeout(function(){console.log('hi');deferred2.resolve(10);}, 1000);
return deferred2.promise;
});
promise2.then(function(contents) {
result = result + contents;
console.log(contents);
});
// promise3
var deferred3 = Q.defer();
var promise3 = Q.fcall(function() {
setTimeout(function(){console.log('hi');deferred3.resolve(11);}, 1000);
return deferred3.promise;
});
promise3.then(function(contents) {
result = result + contents;
console.log(contents);
});
};
-
var x = require('./example5.js');
var result = x.getData();
console.log(' Result is ' + result);
だから私はまでノードモジュールの実行を保持する方法を把握する必要がありすべての約束が解決されます。
現在出力されている -
結果は、私がnode.js.する初心者です未定義
P.Sですだから、これがとても明白なものなら、私を許してください!
質問は重複していると思います。しかし、他の質問では、結果を返すための解決策を見つけることができませんでした。それはまだ約束を返す。
約束は互いのindepententしている場合、Promise.allはトリックを行う必要があります。そうでなければ、あなたがあまりにも多くを持つときに実行する可能性のある入れ子地獄に対処するために、['await'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await)を研究してください - 可能です。 – k0pernikus
q約束のライブラリーでの作業を待ちますか? – user3276247
他の質問を確認しました。最終的な結果を戻す方法については言及していません。要件は約束を取り戻すことではありません。 – user3276247