我一直在開發一個電子商務系統,但我有 iyzipay 支付 api 的問題。我發出成功的請求并從服務器獲得回應,但我無法存盤來自服務器的資料。有人幫忙嗎?
let returnedData = {}
iyzipay.payment.create(paymentRequest, function (err, result) {
if (err) {
return next(new CustomError("?deme ba?ar?s?z.", 500))
}
return returnedData = result
})
//? can't see data here and return empty {}
console.log(returnedData)
// but ? can see here when ? wait 1 second
setTimeout(() => {
console.log(returnedData)
}, 1000);
uj5u.com熱心網友回復:
既然你正在呼叫一個async函式,你應該await得到它的結果。這就是為什么您的第一個控制臺日志不列印結果而 1 秒后列印的原因,因為在那段時間( 堆疊的執行時間)您得到了結果
可以await編輯的功能:
function createPayment(paymentRequest) {
return new Promise((resolve, reject) => {
iyzipay.payment.create(paymentRequest, function (err, result) {
if (err) reject(new CustomError("?deme ba?ar?s?z.", 500));
resolve(result);
});
});
}
一般來說:
(async () => {
const request = {/* whatever */};
try {
const res = await createPayment(request);
console.log(res); // Now it's here
} catch(e) { console.error(e); }
})();
您可能在一條路線中,因此實際代碼將是:
app.use('/payment', async (req, res, next) => {
try {
const result = await createPayment(req);
console.log(result); // Now it's here
res.end();
} catch(e) { next(e); }
})
uj5u.com熱心網友回復:
您的第一個控制臺在請求完成之前被呼叫。等待 1 秒后,請求完成并且回應存盤在 returnData 變數中。因此,對于您的要求,請嘗試使用 promise 或呼叫函式來存盤來自創建支付函式本身的回應,并將回應作為引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/374091.html
標籤:javascript 节点.js 表达
下一篇:列出用于特定專案的所有后端包
