Как мне вызвать setInterval () в зоне Напа? - PullRequest
0 голосов
/ 11 января 2019

Мне нужен один или несколько работников Napa, чтобы сделать что-то в цикле setInterval. Я не совсем уверен, официально ли это поддерживается (я видел публикацию в Git, в которой говорилось, что эта функциональность была добавлена).

Я пробовал много вещей, следующий код - только последняя, ​​которую я пробовал:


    import * as napa from "napajs"
    const zone1 = napa.zone.create('zone1', { workers: 4 });

    zone1.execute(function ()
    {
        const timers = require('napajs/lib/core/timers');

        timers.setInterval(function ()
        {
            console.log("asd");

        }, 100);
    }).then(function (res)
    {
        console.log(res);

    }).catch(function (err)
    {
        console.log(err);

    });

Я ожидаю, что цикл сработает, и в этом случае сервер не прекратит печатать «asd». Или хотя бы скинуть ошибку. Вместо этого кажется, что код работает без каких-либо ошибок и преждевременно заканчивается до того, как первый console.log сможет даже выполнить.

Заранее спасибо!

1 Ответ

0 голосов
/ 11 января 2019

Ваш процесс завершен до console.log("asd")

Вы можете добавить process.stdin.resume() в конец файла, чтобы предотвратить процесс выхода.

import * as napa from "napajs"
const zone1 = napa.zone.create('zone1', { workers: 4 });

zone1.execute(function ()
{
    const timers = require('napajs/lib/core/timers');

    timers.setInterval(function ()
    {
        console.log("asd");

    }, 100);
}).then(function (res)
{
    console.log(res);

}).catch(function (err)
{
    console.log(err);

});

process.stdin.resume()

Проверьте выполнение действия очистки перед тем, как node.js завершит работу для получения дополнительной информации.

...