2016-07-13 15 views
0

私は少し非同期/同期の違いによって混乱しています。ちょっとした背景、私はコールバックと約束を使っているプログラムを書こうとしています。ネストされたリクエストを作成しようとしていましたが、オブジェクトの値がこれらのリクエストを実行していないため、JSオブジェクトを入力して変更し、jsオブジェクトを返す関数を作成しています。変更には、JSオブジェクトに追加する別のフィールドを検索するAPI呼び出しが含まれます。関数からオブジェクト応答を返す - Javascript

私はこれと似たようなことでこれを達成することができます:jsobjectの最終版は準備ができたときに、発信者に通知されますので、あなたは、objectModificationにコールバック関数を渡すことができ

TEST1 function(....){ 
     // do stuff 
     request.get(options, function(error, response, body) { 
        // do stuff to get js object 
        jsobject = objectModification(jsobject); //modified js object 
     }); 
    } 

    objectModification function(jsobject) { 
     request.get(options, function(error, response, body) { 
        // do stuff to modify js object 
     }); 
     return jsobject; 
    }  
+0

私はあなたの関数呼び出しが... 'jsobject = objectModification(response);' ...あなたが約束を使用する場合、これははるかに簡単である可能性があると考えます... –

+0

これは動作しますか?私が上記で説明した関数メソッドを使用すると、 "未確認"を返し続けます – pokemongirl1234

+0

あなたは何をしているのか分かりません...もしあなたが 'undefined'を取得した場合、それは' request.get 'コール...'リクエスト 'とは何ですか?あなたはどんなURLを打っていますか?より正確な解決策を提供するためにコードには重要な要素がありません。 –

答えて

0

、そしてどのようなことがある:

function TEST1(....){ 
    var options = { ... }; 
    request.get(options, function(error, response, body) { 
     // do stuff to get js object, for example: 
     jsobject = response; 
     // modify jsobject asynchronously: 
     objectModification(jsobject, function (jsobject) { 
      // here we have the final version of jsobject. 
     }); 
    }); 
} 

function objectModification(jsobject, done) { 
    var options = { ... }; 
    request.get(options, function(error, response, body) { 
     // do stuff to modify js object, for example: 
     jsobject.newProperty = response; 
     // Then call callback function to pass the modified js object   
     done(jsobject); 
    }); 
} 
関連する問題