我已经被这些异步事物困住了几个小时,现在我的大脑干了。我在具有Express的Node中有一个应用程序,试图成功完成名为“ Flow”的支付系统的实现。
//REALIZAR PAGO $
app.post('/realizarPago', function(req, res){
var amount = Math.floor(Math.random() * 999999) + 100000;
var paymentMethod = 9;
var urlRedirect = "https://sandbox.flow.cl/app/web/pay.php?token=";
...
//Other relevant variables
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
...
//this is just a sample token that I'll later capture from response
urlRedirect = urlRedirect+"1234567890";
});
});
var postData = qs.stringify({
'flowOrder': flowOrder,
'amount': amount,
...
});
req.write(postData);
res.redirect(307, urlRedirect);
req.end();
});
一切正常,问题在于重定向在urlRedirect = urlRedirect+"1234567890";
中的urlRedirect更新其值之前执行
我在执行.then()
之后尝试使用res.write(postData)
,但没有有用的结果。我几乎在每种方法中都尝试过.then()
,也尝试过使用res
而不是req
,反之亦然。我也做了一些研究,发现了一个有趣的东西,称为“瀑布”,用于异步方法,但是在res.on
方法的情况下,无法想象将其封装的方法。
我完成了,请给我一些指导。预先感谢。
我已经被这些异步事物困住了几个小时,现在我的大脑干了。我在具有Express的Node中有一个应用程序,试图成功完成支付系统的实现...
您将重定向放入end
事件处理程序中,并且还添加了一个错误处理程序,以防请求失败,并且您更改了两个res
参数之一的名称,以使它们不会冲突,并且您仍然可以访问他们两个。我将较高的一级更改为response
,因此可以在已经定义res
的其他回调中使用:
您可以做的是:您可以在IIFE中包装一些函数,然后返回Promise。等待着,让您的IIFE等到获得一些结果