gpt4 book ai didi

node.js - 无法从请求回调发送请求

转载 作者:行者123 更新时间:2023-12-03 12:35:44 25 4
gpt4 key购买 nike

我无法在请求回调中执行第二个请求。

request({
url: url,
headers: {
'auth-token': token
},
method: 'POST',
json: true,
body: data
}, (err, req, body) => {
if (err) {
console.log(err);
} else {
// Prosses data;

// This is the second request.
request({
url: url2,
headers; {
'auth-token': token
},
method: 'POST',
json: true,
body: data2
}, (err, req, body) => {
if (err) {
console.log(err);
return;
}

//Process data.
})
}
})

问题是第二个请求没有执行。
我正在使用 nodemon 来启动 express server , 但在 nodemon express 上仅接收第一个请求.

但奇怪的是,当我第二次尝试在不关闭 electron 的情况下调用该方法时应用程序, second request被执行。我可以在 nodemon 上看到它即首先执行第二个请求。
nodemon 的输出是这样的。
POST /path/to/url 200 6.181 ms - 641 //-> this is the first execution. then there is nothing follows.
// Then I call the method again using the app. And the result is this.
POST /path/to/second/url 200 9.645 ms - 21
POST /path/to/url 200 21.628 - 641

它看起来像 /path/to/second/url如果第二次调用该方法,它会停留在某个地方,并且只是发送到服务器。

请帮忙,谢谢。

更新:添加了更多信息。

我有一个文件夹可以 routes所有 .js文件保存在那里。
然后我在我的 app.js 上使用它加载它
let rs = fs.readdirSync(path.join(process.cwd(), '/routes/'));
rs.forEach((file) => {
if (file.indexOf('.js') !== -1) {
let fn = '/' + file.replace(/\.[^/.]+$/, '');
let pt = path.join(__dirname, './routes', fn);
let req = require(pt);
app.use(fn, req);
}
});

然后在路线文件上我有类似的东西。
router.post('url', (req, res) => {
// here calling the controller.
// mostly just single line passing the request and result variable to the controller.
});

实际上,该请求是在 ipc 回调中调用的。我有一个菜单项,在 click() 上事件我刚刚使用了 browserWindow.getFocusedWindow().webContents.send('ipc-name')那么这将被触发。
  ipc.on('ipc-name', () => {
// The request is called here.
}

最佳答案

这并不能解决 OP 问题,因为该问题存在于 Linux 环境中,但可以作为一种解决方法。我们必须使用 ClientRequest 而不是请求模块 Electron 中的 API 是基于事件的,只会使任务变得更加困难。但不会受到回调内部回调所面临的问题的影响。

示例代码:

function triggerCall() {
const request = net.request(`${root}/routes/get1`);
request.on('response', (response) => {
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
})
response.on('end', () => {
console.log('req 1 end');
const request1 = net.request(`${root}/routes/get2`);
request1.on('response', (response) => {
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
})
response.on('end', () => {
console.log('req 2 end');
})
})
request1.end();
})
})
request.end();
};

关于node.js - 无法从请求回调发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com