我需要我的函数返回一个承诺,在它创建的承诺被返回到调用它的函数之后立即解析。
现在我有一个:
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'有人知道为什么会发生这种事吗?
发布于 2018-05-09 21:36:23
您返回的是原始承诺,而不是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});
}
}https://stackoverflow.com/questions/50262359
复制相似问题