0

リクエスト コールバック内で 2 番目のリクエストを実行できません。

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.
        })
    }
})

問題は、2 番目の要求が実行されていないことです。を開始するために nodemon を使用していますexpress servernodemon 、最初の要求のみが で受信されますexpress

electronしかし、奇妙なことに、アプリを閉じずに 2 回目にメソッドを呼び出そうとすると、second requestが実行されます。nodemonそして、2 番目のリクエストが最初に実行されることがわかります。

の出来上がり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はどこにもとどまっていないように見え、メソッドが 2 回目に呼び出された場合にサーバーに送信されます。

助けてください、ありがとう。

更新: 詳細情報を追加しました。

routes すべての.jsファイルをそこに保存できるフォルダがあります。次に、これを my 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.
   }
4

1 に答える 1