LINUX.ORG.RU

Nodejs виснет

 ,


0

1

Когда делаешь resolve(_client) то процесс node виснет и не обрабатывает ничего (это сервер), если просто resolve() без аргумента вызываешь то норм. kclient конектится к websocket и посылает на него команды свои. Как будто что-то блокируется. Но почему когда resolve без аргумента вызываешь то норм. Ничего не пойму


class Peer{    
    
    constructor(uri){
        this.uri = uri;
        this.client = null;
    },    
    
    create(sdp){
        this.getClient().then( (client) => {
            log(client);
        }).catch((err) => {
            error(err);
        });        
    },


    getClient(){    

        return new Promise((resolve, reject) => {

            if (this.client) {
                resolve(this.client);
                return true;
            }

            log("create client");

            kclient(this.url, {}, (err, _client) => {


                if (err) {
                    error(err);
                    reject(err);
                }else{
                    log("client created");
                    this.client = _client;

                    resolve(_client);

                }
            });

        });
     
    }
}

let p = new Peer(url);
p.create(sdp);

★★★★

Ещё заметил странность если вызывать resolve({x: _client}) то тоже норм

gobot ★★★★
() автор топика

resolve(_client);
заметил странность если вызывать resolve({x: _client})

`_client`, случайно, не промис? (А, уже написали).

Мб `_client` _похож_ на промис? И ты используешь нативные промисы или какие-то другие?

ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

Нет, _client не промис(а как он может быть похож? Это обычный объект, без методов then, catch...). Да, я использую нативные Promise. Вообщем то я обошел эту проблему, просто делаю return kclient... Но я так и не понял почему node зависает. Что то блокирует. Но почему, когда я просто передаю в параметре resolve(_client)?!

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Ого. Мужики-то не знали.

Надо сообщить разработчикам ноды\v8 чтобы к черту выпиливали debugger protocol\inspector, а то зря силы тратят видимо.

int64
()
Ответ на: комментарий от anonymous

Ну тогда на любой вопрос будет ответ: дебагер. Но намек понял, наверное это единственное решение для меня, хотя и далек я от дебагерства nodejs...

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Тогда цепляйся дебагером поддерживаемых IDE. В документации все написано. Ну или ручками в терминале, CLI, страдай. Твой выбор.

int64
()
Ответ на: комментарий от int64

Сам страдай )) А я забил уже, раз никто не знает. Время нет. Просто думал, может это тривиальная херня и подскажут по быстрому. Ну нет так нет

gobot ★★★★
() автор топика
Ответ на: комментарий от int64

Нода дебажится в консоли хрома\хромиума. Обычными девтулзами.

Серверная часть, дебажится в сонсоли браузера! Господи 10 из 10!

ggrn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.