javascript - 在Javascript(NodeJS)中调用rest api并返回响应未定义
问题描述
当我调用 rest API 并返回响应时,它显示未定义但我 console.log 这个响应它返回
var request = require("request");
function initialize() {
// Setting URL and headers for request
var options = {
url: 'http://postalpincode.in/api/pincode/400605',
json: true
};
// Return new promise
return new Promise(function (resolve, reject) {
// Do async job
request.get(options, function (err, resp, body) {
if (err) {
reject(err);
} else {
resolve(JSON.stringify(body));
}
})
})
}
function main() {
var initializePromise = initialize();
initializePromise.then(function (result) {
return result;
})
}
console.log('', main())
但是当我控制台记录此响应时,它显示输出正确
var request = require("request");
function initialize() {
// Setting URL and headers for request
var options = {
url: 'http://postalpincode.in/api/pincode/400605',
json: true
};
// Return new promise
return new Promise(function (resolve, reject) {
// Do async job
request.get(options, function (err, resp, body) {
if (err) {
reject(err);
} else {
resolve(JSON.stringify(body));
}
})
})
}
function main() {
var initializePromise = initialize();
initializePromise.then(function (result) {
console.log('', result)
})
}
console.log('', main())
我想当我调用 rest API 并返回响应时,它显示正确的输出
解决方案
作用域内的 returnthen
不是为 function 返回main
,而只是为then
promise 的作用域返回。您需要像这样返回承诺:
function main() {
var initializePromise = initialize();
return initializePromise.then(function (result) {
return result;
})
}
main().then((result) => console.log('',result));
你不能让同步函数调用异步方法并期望得到它的结果。
推荐阅读
- java - 如何使两个 Web 应用程序的数据库保持同步?
- javascript - 与孩子一起移动父骨骼
- arrays - 如何在 React Native 的 .map 中调用类函数
- node.js - node.js 中的 Redis 异步/等待问题
- python - Pygame OpenGL 3D 立方体滞后
- vb.net - BulkSynchronize 删除子集数据 VB.NET
- powershell - 我想在线上传本地文件夹的所有数据到Sharepoint的“General”文件夹
- python-3.x - 字典项的打印索引
- django - gunicorn ImportError:没有名为 django_jalali 的模块
- hadoop - http://localhost:50070/ 网页界面不起作用