gpt4 book ai didi

javascript - 从 REST 调用中返回 Promise

转载 作者:行者123 更新时间:2023-11-30 09:40:27 25 4
gpt4 key购买 nike

我正在尝试调用 REST 调用并返回一个 promise,以便之后我可以操作数据。

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

我的 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 结果)并打印出“调用完成”控制台。

问题出在

returnPromise.then

第一页,其中".then" 返回未定义。

起初我认为可能是在 REST 返回响应之前调用了 promise。于是,我想到了做一个超时功能来测试。

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

但即便如此,returnPromise 仍返回“undefined”。

最佳答案

如果你希望一个函数返回一个 promise ,它应该返回一个 promise

你的 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
});

关于javascript - 从 REST 调用中返回 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41372572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com