Node.js中使用Axios调用Zoom API如何等待响应?
问题描述与解决
我查阅了大量相关解答,但多数都和用Axios获取Zoom数据无关,完全没用!我想要通过Axios同步调用Zoom API,也就是等Zoom API返回响应后再继续执行后续代码。我写了主文件test-v02b.js和导出模块zoom-v2b.js,运行node test-v02b.js能成功拿到数据,但数据总是在“执行完成”的提示之后才返回。我已经在导出模块里加了async/await尝试解决,但没效果。
更新:按照Edward的建议,把顶层语句封装成伪main函数后,await终于正常工作了。
相关代码
主文件 test-v02b.js
const zoom = require('./zoom-v2b'); const token = zoom.jwtRefresh(); const axios = require('axios'); const options = { method: 'get', headers: { 'Authorization': 'Bearer '+token, 'User-Agent': 'Zoom-api-Jwt-Request', 'content-type': 'application/json' } }; // edit (async function() { // added line console.log(`OPTIONS;${JSON.stringify(options.headers, null, 2)}`); const data = await zoom.zAXIOSv2(options); // added await console.log('Data'+data); console.log("Fetch Completed"); })(); // added line
导出模块 zoom-v2b.js
// import for jwtRefresh const jwt = require('jsonwebtoken'); const config = require('./config'); // import for zAXIOS const axios = require('axios'); // Use the ApiKey and APISecret from config.js function jwtRefresh() { const payload = { iss: config.APIKey, exp: ((new Date()).getTime() + 5000) }; const token = jwt.sign(payload, config.APISecret); console.log(`JWT_TOKEN; ${token}`); return token; } module.exports = { jwtRefresh, zAXIOSv2: async (options) => { let response; const uriStr = 'https://api.zoom.us/v2/users/' + config.OWNER ; options.url = uriStr; try { response = await axios(options); console.log('Success;', response.data.user_created_at); } catch (err) { console.log('Error;', response.status); } return response.data ? response.data : response.status; } };
内容的提问来源于stack exchange,提问作者chris-j
相关产品推荐
相关产品推荐

