2016-12-29 19 views
1

私はREST呼び出しを呼び出して約束を返そうとしているので、後でデータを操作することができます。返信RESTからの呼び出し

testService() { 
    console.log("start of testService"); 

    var request = require('request'); 
    var user = "test"; 
    var ipadd = "127.0.0.1"; 

    request({ 

     url: 'https://' + 'LocalHost' + '/URLOFWEBSERVICE', 
     method: 'POST', 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded' 
     }, 
     form: { 
      userID: user, 
      userIpAddress: ipadd 
     } 
    }, function(error, response, body) { 
     if (error) { 
      console.log(error); 
     } else { 
      console.log(response.statusCode, body); 
      var newPro = new Promise(function(fulfill, reject) { 
       fulfill(body); 
      }); 

      console.log(newPro); 
      return newPro; 

     } 
    }); 
} 

私はresponse.stateCode、ボディ(REST結果)をプリントアウトすることができるよと「満たす呼び出さ:私のRESTサービスは以下を持っている別のファイルにに位置しています

var self = this; 
var returnPromise; 
returnPromise = self.httpService.testService(); 
returnPromise.then(function(result){ 
console.log(result); 
}); 

"コンソールが印刷されます。

問題は、私はundefinedを返します最初のページ

returnPromise.then

、そのに ".then" です。

私は、RESTが私に応答を返す前に、約束がされていると思っていました。だから、私はタイムアウト機能をテストすることを考えました。

setTimeout(
function(){ 
    console.log(returnPromise); 
} 
, 5000); 

でも、returnPromiseは私に「未定義」を返します。

+1

"testService()"のソースコードを少なくとも投稿する必要があります。 –

+1

'self.httpService.testService();は何を返していますか?約束? ... '.then'は未定義です。あるいは、コールバックが定義されていない' result'です。 –

+0

_ "私のRESTサービスは、次のファイルを持っています:" _別のファイル内の "javascriptは、呼び出された関数内にありますか? – guest271314

答えて

2

あなたは関数が約束を返すことが予想される場合、それは

あなたtestServiceは何も返さない約束を返すべき

この行います

として呼び出すことができ
testService() { 
    console.log("start of testService"); 
    var request = require('request'); 
    var user = "test"; 
    var ipadd = "127.0.0.1"; 
    return new Promise(function(fulfill, reject) { 
     request({ 
      url: 'https://' + 'LocalHost' + '/URLOFWEBSERVICE', 
      method: 'POST', 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
      }, 
      form: { 
       userID: user, 
       userIpAddress: ipadd 
      } 
     }, function(error, response, body) { 
      if (error) { 
       // reject the promise, handle with .catch 
       reject(error); 
      } else { 
       console.log(response.statusCode, body); 
       fulfill(body); 
      } 
     }); 
    }); 
} 

// var self = this; // why? not needed in the code shown 
// var returnPromise; // why? it's not needed in the code shown 

this.httpService.testService() 
.then(function(result) { 
    console.log(result); 
}) 
.catch(function(err) { 
    // handle your errors here 
}); 
+0

私の約束が実際に返されなかったことはわかりませんでした。ありがとう! – Gene

+2

あなたの関数が返さなかったことを意味します:p –

関連する問題