【发布时间】:2018-10-19 20:37:27
【问题描述】:
我正在使用 Promise 编写代码以获取 JSON 值,该代码正在运行,但输出远离单词 Promise { } 之间返回。
const info = new Promise((resolve, reject) => {
var req = require('request');
var options = {
url: 'https://api.info.com/',
headers: {
'User-Agent': 'request'
}
};
req(options, function (err, response, body) {
if (!err && response.statusCode === 200) {
resolve(JSON.parse(body));
}
});
});
console.log(info); //Output: Promise { [ { name: 'Gary'}, { name: 'John'} ] }
我做错了什么?
我希望我的输出与网站上的一样:
[ { name: 'Gary'}, { name: 'John'} ]
==> 更新 它部分有效:
const info = new Promise((resolve, reject) => {
var req = require('request');
var options = {
url: 'https://api.info.com/',
headers: {
'User-Agent': 'request'
}
};
req(options, function (err, response, body) {
if (!err && response.statusCode === 200) {
resolve(JSON.parse(body));
}
});
});
info.then(function(value) {console.log(value)});//output: [ { name: 'Gary'}, { name: 'John'} ]
但是,我需要使用 then 之外的结果来使用这个 Json 结果执行其他查询操作,我尝试了类似的方法:
info.then(function(value) { jsonfile = value });
console.log(jsonfile);//Output: jsonfile is not defined
【问题讨论】:
-
这是一个承诺;不确定您的期望——您是立即记录它而不是等待它。到它被记录的时候,它已经解决了,但是你正在注销 Promise 本身。
-
你不能这样做,因为这是一个异步调用,如果你真的想要这种响应,请使用 await 关键字。geeksforgeeks.org/using-async-await-in-node-js