Вернуть обещание, которое немедленно разрешается - PullRequest
0 голосов
/ 10 мая 2018

Мне нужно, чтобы моя функция возвращала обещание, которое разрешается сразу после того, как созданное обещание было возвращено функции, которая его вызывает.

Прямо сейчас у меня есть это:

class BrandsDataFetcher extends BaseDataFetcher {
    getBrands() {
        const p = new Promise((resolve, reject) => resolve());  
        p.then(() => {
            return {'a': 1, 'b': 2};
        }); 
        return p; 
    }
}

Однако в моей функции, которая вызывает эту функцию, возвращаемые данные не определены:

const brandsDataFetcher = new BrandsDataFetcher();
return brandsDataFetcher.getBrands()
    .then((data) => {
        console.log(typeof(data));   // 'undefined'

Кто-нибудь знает, почему это может происходить?

1 Ответ

0 голосов
/ 10 мая 2018

Вы возвращаете исходное обещание, а не возвращаемое значение из then:

const p = new Promise((resolve, reject) => resolve());
const q = p.then(() => {
    return {'a': 1, 'b': 2};
});        // q would return your object...
return p;  // but you return the original p instead!

Идиоматический способ сделать это с помощью Promise.resolve(value):

class BrandsDataFetcher extends BaseDataFetcher {
    getBrands() {
        return Promise.resolve({'a': 1, 'b': 2}); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...