加载变量值后如何重定向到URL?

问题描述 投票:0回答:2

我已经被这些异步事物困住了几个小时,现在我的大脑干了。我在具有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中有一个应用程序,试图成功完成支付系统的实现...

javascript node.js express asynchronous
2个回答
0
投票

您将重定向放入end事件处理程序中,并且还添加了一个错误处理程序,以防请求失败,并且您更改了两个res参数之一的名称,以使它们不会冲突,并且您仍然可以访问他们两个。我将较高的一级更改为response,因此可以在已经定义res的其他回调中使用:


0
投票

您可以做的是:您可以在IIFE中包装一些函数,然后返回Promise。等待着,让您的IIFE等到获得一些结果

© www.soinside.com 2019 - 2024. All rights reserved.