Дождитесь выполнения обратного вызова Subject - PullRequest
0 голосов
/ 06 августа 2020

Рассмотрим следующий код:

const mA = async () => {
    try {
        const subscription = myEmitter.subscribe(url => getD(url));
        const la=()=>{...};
        return la;
    }
     catch (error) {
        throw error;
    }
};

Как я могу обеспечить выполнение кода ниже const subscription после того, как getD завершит выполнение?

1 Ответ

0 голосов
/ 06 августа 2020

Ваш вопрос не совсем ясен, но я думаю, что понял ваши намерения.

Во-первых, вы должны быть уверены, что myEmitter является конечным, что означает, что он не будет работать вечно. Например, если myEmitter = interval(1000) подписка на него никогда не будет завершена, вы не сможете запускать ничего «после».

Предполагая, что myEmitter является конечным, вы можете просто использовать метод Observable.toPromise, поскольку ваш код уже работает в функции async, ваш код будет:

const mA = async () => {
    try {
        const url = myEmitter.toPromise();
        getD(url); // you might need to await this as well
        const la=()=>{...};
        return la;
    }
     catch (error) {
        throw error;
    }
};

Примечание: toPromise устарело, вы можете узнать больше об этом в здесь сообщение в блоге .

...