【发布时间】:2019-07-06 10:32:08
【问题描述】:
我需要调用外部 api 并发送正文数据并重新处理。
我试试:
var data = {};
data['data'] = {};
data['data']['access_token'] = '123456';
data['data']['secret_key'] = '456897';
data['data']['pincode'] = '457821';
var options = {
"headers": { "content-type": "application/json" },
"url": "http://example.com/api.php",
"body": JSON.stringify(data)
};
const getChuckNorrisFact = util.promisify(Request);
getChuckNorrisFact(options).then(data => {
let content = JSON.parse(data.body);
console.log('Joke: ', data.body);
}).catch(err => console.log('error: ', err))
console.log(getChuckNorrisFact);
我想在getChuckNorrisFact 变量中得到响应。
【问题讨论】:
-
@jonrsharpe 它不是重复的,它不是关于 ajax 或 JavaScript 它是关于 node.js,你不知道 Node.js 然后离开它。
-
节点 is JavaScript... 请阅读 建议的副本,它仔细解释了这类一般问题以及处理它的各种方法.
-
你不能做你想做的事。异步承诺结果仅在
.then()回调或您从那里调用的函数中可用(这是时间问题)。如果需要,您可以将此代码包装在一个函数中并使用await,但这仍然不允许您将值分配给更高范围的变量并按照您尝试的方式使用它。您将需要学习如何在 Javascript 中正确进行异步编程(在浏览器或 node.js 中使用相同的技术)。阅读你的问题被标记为重复 - 那里描述了从回调中获取值的所有技术。 -
可以用其他方法吗?? @jfriend00
-
没有。在传递到的回调中使用异步值。这就是您在 Javascript 中为异步操作编程的方式。您可以阅读有关
async和await的信息,这是一种不同的语法,但您仍然需要了解正确的异步编程。只需将想要使用getChuckNorrisFact()响应的代码放在.then()回调中。你就是这样做的。