2017-11-09 4 views
0

(Postman環境で作業中)結果を出力せずにすべてのurl要求を次のコードが実行することが検出されました。_.forEach構造体でコールバックを提供

_.forEach(
      urls, 
      function (myUrl) {    
       pm.sendRequest({ 
        url: myUrl, 
        method: 'GET', 
        header: { 
         'content-type': 'application/json'      
        } 
       }, function (err, res) { 
        console.log(res) 
       });    
      } 
     ) 
     pm.environment.set(`sections`,sections); 
    } 

forEach内でコールバックを提供する方法はありますか?下のコードのように表示される場合があります。あるいはそれに代わるものはありますか?

function callback() { 
     console.log('callback'); 
    } 

    _.forEach(
      urls, 
      function (myUrl,callback) {    
       pm.sendRequest({ 
        url: myUrl, 
        method: 'GET', 
        header: { 
         'content-type': 'application/json'      
        } 
       }, function (err, res) { 
        console.log(res) 
       });    
      } 
     ) 
     pm.environment.set(`sections`,sections); 
    } 

当初は、応答処理機能がそれを処理するとは思っていましたが、そうではありません。

+0

あなたがしようとすると、引数として 'callback'を渡す必要はありません、あなたは、単にそれを呼び出すことができますので、それがスコープ内に既にあります – Phil

答えて

0

ロジックを別の関数getUrlに分岐し、コールバックを渡す方が良いことがわかりました。

次のコードは動作します:

_.forEach (
    urls, 
    function (myUrl) { 
     getUrl(myUrl,function (err,res) { 
      if (err) { 
       console.log(err); 
      } else { 
       console.log(JSON.stringify(res)); 
      } 
     }); 
    } 
); 

function getUrl(myUrl, callback) { 
    var call = { 
     url: myUrl, 
     method: 'GET', 
     header: { 
      "Authorization": `Bearer ${token}`, 
      "Content-Type": "application/json" 
     } 
    }; 

    pm.sendRequest(
     call, 
     function (err, res) { 
      callback (err,res); 
     } 
    ); 
}