Вызов функции внутри собственного обратного вызова - PullRequest
0 голосов
/ 14 февраля 2019

Мое приложение NodeJS запускает мое приложение C ++ и просматривает его.Если приложение убито, сервер запускает его снова.Если мое приложение будет работать в течение нескольких дней, вызовет ли оно переполнение стека, если гипотетически этот сценарий уничтожения / смерти случится слишком много раз?Если да, можете ли вы предоставить решение?

Спасибо

import { execFile } from "child_process";

function runRedirector(){
    execFile("./redirector.out", ["1"], {}, function(error, stdout, stderr) {
    runRedirector();
    });
}

1 Ответ

0 голосов
/ 14 февраля 2019

Вы вызываете стек не будет расти из-за асинхронной природы execFile.К тому времени, когда обратный вызов будет вызван, внешний вызов уже будет извлечен из стека вызовов

const {execFile} = require("child_process");

let i = 0
function runRedirector(){
    execFile("./redirector.out", ["1"], {}, function(error, stdout, stderr) {
      console.log('In callback', i++)
      runRedirector();
    });
    console.log('In runDirector', i);  // this will be logged first
}
...