在 GET 请求中表达 WriteFile 而不会阻塞响应?

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

我有一个请求需要在应用程序初始化时发出,其中部分 JSON 响应被解析为 JS 并且必须写入文件 - 响应的其余部分也需要由前端接收。目前我有这样的设置:

function getAds(req, res) {
  console.log('GET Advertisements');
  let url = 'http://example.com/json/advertisements/v5/all';
  request(url, (err, response, body) => {
    let advertisements = JSON.parse(body);
    let script = advertisements.header;
    fs.writeFile('client/ads/dfpAds.js', script, function(err) {
      if (err) {
        console.error(err);
      }
    });
    res.send(advertisements);
  });
}

这会成功写入 JavaScript 文件,但它不会将响应发送到我的前端 并且 还会阻止我在其他控制器中发出的所有其他 HTTP 请求。

可以这样做吗?我是否需要将处理 WriteFile 的请求与将发送到前端的另一个请求分开?

我已经尝试了多种组合,但无论如何我都无法让 WriteFile 不阻止所有其他 HTTP 请求。非常感谢任何帮助。

javascript node.js http express fs
1个回答
0
投票

添加选项参数

{flag: 'w'}
对我有用:

fs.writeFile('client/ads/dfpAds.js', script, {flag: 'w'}, function(err) {
      if (err) {
        console.error(err);
      }
});
© www.soinside.com 2019 - 2024. All rights reserved.