![](/img/trans.png)
[英]How to get the json response back in the front end that I am sending from my backend?
[英]How can I wait for my "request" and response back to front end?
我現在正在研究 Zoom API。 我想將我的令牌從 ZOOM API 發送到前端作為響應。 但是,“來自請求的令牌”始終首先打印且未定義! 然后來自 Zoon API 的令牌”將跟隨令牌。我怎樣才能做到這一點?謝謝!
const Newrequest = require("request");
class ZoomController {
async getInvLink({ request, response }) {
const instructor_id = params.id;
try {
let tokenRes;
const code = request.all().code;
console.log("the code from frontend is ", code);
const client_id = _something_
const client_secret = _something_
var options = {
method: "POST",
url: "https://api.zoom.us/oauth/token",
qs: {
grant_type: "authorization_code",
code: code,
redirect_uri: _something_
},
headers: {
Authorization:
"Basic " +
Buffer.from(client_id + ":" + client_secret).toString("base64")
}
};
await Newrequest(options, function(error, res, body) {
if (error) throw new Error(error);
tokenRes = JSON.parse(body);
console.log("token from Zoon API",tokenRes);
});
console.log("token from request",tokenRes);
return response.status(200).send(tokenRes);
} catch (error) {
console.log(error);
return response.status(401).send();
}
我不知道這個 api 是什么,但我將做出有根據的猜測, Newrequest
不會返回承諾。 所以等待它實際上並不是你想要做的。
但是,您可以做的是使用一些簡單的代碼將其轉換為承諾:
const tokenRes = await new Promise((resolve, reject) => {
Newrequest(options, function(error, res, body) {
if (error) reject(error);
tokenRes = JSON.parse(body);
console.log("token from Zoon API",tokenRes);
resolve(tokenRes);
});
})
你必須要聽的東西端點,您將收到的代碼在那邊。 這是您可以發送以交換訪問令牌的代碼。
請參閱此鏈接: https : //www.npmjs.com/package/request#promises--asyncawait
util.promisify()
將需要回調的常規函數轉換為返回承諾例子 :
Newrequest(options, function(error, res, body) {
if (error) throw new Error(error);
tokenRes = JSON.parse(body);
console.log("token from Zoon API",tokenRes);
});
// to
const util = require('util');
const req = util.promisify(Newrequest)
const data = await req(options)
// ...
這是一個示例代碼。 請適應您的需求
有用的課程: https : //masteringjs.io/tutorials/node/promisify
使用另一個庫會很有趣。
備擇方案 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.