Не могу отправить ответ, когда в теле apt.get () есть функция с циклом while - PullRequest
0 голосов
/ 08 декабря 2018

Я боролся с этой проблемой пару часов, поэтому я решил попросить вас о помощи.Вот мой код nodejs:

var SSE = require('sse-nodejs');

var express = require('express');

var app = express();

var httpsServer = require('https').createServer();

var fs = require('fs');

app.get('/berskik/sse/notification/:usrDir', function (req,res) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    var app = SSE(res);
    var path = "../static/resources/users_files/" + req.params["usrDir"];
    var fileName = "";
    fileName = waitAndReturnUploadedFileName(path);
    sendEvent(app, fileName, res);
});

app.listen(4650, function () {
    console.log('Notification SSE Server has succesfully started at port 4650.');
});

function msleep(n) {
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n);
}

function readDir(path){
    return fs.readdirSync(path);
}

function sendEvent(app, fileName, res){
    console.log("Sending notification.");
    app.send({"notify": fileName});
    console.log("Notification has been sent.");
}

function waitAndReturnUploadedFileName(path) {
    var newFile = "";
    var breakFlag = false;
    var oldItems = readDir(path);
    while(!breakFlag){
        var items = readDir(path);
        console.log(items.length + "  " + oldItems.length);
        if(items.length > oldItems.length){
            for(var i = 0; i < items.length; i++){
                console.log(!oldItems.includes(items[i]));
                if(!oldItems.includes(items[i])){
                    newFile = items[i];
                    breakFlag = true;
                }
            }
        }
        oldItems = items;
        msleep(1800);
    }
    console.log("New file has been found.");
    return newFile
}

И моя проблема в том, что когда я комментирую или удаляю

fileName = waitAndReturnUploadedFileName(path);

, которая на самом деле является целой логической функцией, app.send () работает отлично,но когда у меня есть эта функция в моем коде, то ничего не отправляется, даже если все другие функции (включая console.log ()) выполняются.

Я буду признателен за каждый ответ.

...