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(_client);
заметил странность если вызывать resolve({x: _client})

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

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

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

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

gobot ★★★ ()