私はJavascriptには少し新しく、その非同期的な側面に苦労しています。私のプログラムは2つのオブジェクトの値をチェックします.2つ目のオブジェクトは、チェックを完了するために必要な重要なプロパティを持っていません。だから私はその値/プロパティ(ID)を取得する約束をして、今私はそのID値をチェック関数に渡す必要があります。チェック機能は、IDが一致するかどうかを確認するためにtrue/falseを返すだけです。チェック関数の値は別の関数に渡され、適切に動作し、必要に応じてその内容を編集します。だから私は基本的にそれが括弧の外側のティックの値にアクセスすることはできません。私はこのすべてが起こっているところで私のコードのスニペットを含めました。すべてのことがそれで視覚化しやすいからです。誰かが私にこの問題の解決策を教えてもらえますか?どんなアドバイスでも大いに役立ちます!できるだけスクリプトの変更を最小限に抑えたい。Promiseの値を別の関数に渡すにはどうしたらいいですか?
var Q = require('q');
getID = function(instance, person, callback){
var = deferred = Q.defer();
var url = 'www.blah.com';
var options = {
'url': url
};
request.get(options, function(error, response, body){
if (error) {
deferred.reject(error);
}else{
var res = body;
var obj = JSON.parse(res);
var id = obj.id;
deferred.resolve(id);
} else deferred(obj);
});
check = function(instance, thing1, thing2){
var tick = true;
getID(instance, thing2).then(function(id)){
var id_1 = thing1.id; // thing1 passed into check with ID
var id_2 = thing2.id; // thing 2 now has id attached to it
if(id_1 == id_2){
tick = true; // VALUE 1
}else{
tick = false; // VALUE 2
});
// NEED VALUE 1 OR 2 OF TICK HERE
if(thing1.name == thing2.name){
tick = true;
else{
tick = false;
}
// similar checks to name but with ADDRESS, EMAIL, PHONE NUMBER
// these properties are already appended to thing1 and thing 2 so no need to call for them
};
editThing = function(instance, thing, callback){
var checked = check(instance, thing1, thing2);
if(checked){
// edit thing
}else{
// don't edit thing
};
は 'deffered'を返す' getID'機能ですか?それはあなたのコードスニペットではありません。 – Victory
var Q = require( 'q');一番上にあるはずです! – pokemongirl1234
これは 'getID'の' deferred'オブジェクトを 'check'で使用できるように返すのでしょうか? – Victory