出现错误。那么那不是功能。
当我调用一个函数时,它会像这样:
static BackgroundFinalizer() {
const items = Store.getStoredItems();
items.forEach(function (item) { // 0.1
if (new Date(item.episode) < new Date()) {
let tvmaze = new Tvmaze();
tvmaze.getData(item.name).then(data => {
tvmaze.getEpisodeData(data.data.id).then(data => {
let newdate = tvmaze.sortByNextEpisode(data);
Store.removeStoreItem(item.name);
Store.storeItem2(item.name, newdate);
});
});
} else {}
});
return 'promise'
}
功能:
{{1}}
我需要兑现承诺吗?即使函数本身不需要一个?该怎么办?
答案 0 :(得分:2)
使用前,您需要study promise。
static BackgroundFinalizer() {
return new Promise ( (resolve, reject) => {
const items = Store.getStoredItems();
items.forEach(function (item) { // 0.1
if (new Date(item.episode) < new Date()) {
let tvmaze = new Tvmaze();
tvmaze.getData(item.name).then(data => {
return tvmaze.getEpisodeData(data.data.id);
}).then(data => {
let newdate = tvmaze.sortByNextEpisode(data);
Store.removeStoreItem(item.name);
Store.storeItem2(item.name, newdate);
});
} else {
}
});
resolve('success');
});
}
答案 1 :(得分:-1)
return 'promise'
返回字符串promise
,而不是Promise。您需要为您的代码创建一个Promise,类似于我在下面所做的事情:
(请注意,我只是将其插入,没有完整的测试可用;代码中可能还有其他问题。但这应该使您更接近目标)
static BackgroundFinalizer() {
return new Promise(function(resolve, reject) {
const items = Store.getStoredItems();
items.forEach(function(item) { // 0.1
if (new Date(item.episode) < new Date()) {
let tvmaze = new Tvmaze();
tvmaze.getData(item.name).then(data => {
tvmaze.getEpisodeData(data.data.id).then(data => {
let newdate = tvmaze.sortByNextEpisode(data);
Store.removeStoreItem(item.name);
Store.storeItem2(item.name, newdate);
});
});
} else {
};
});
resolve();
});
}