这是代码:
const reportModules = [
{ url: '', params: { to: format(TODAY, DATE_FORMAT).toString(), from: format(TODAY, DATE_FORMAT).toString() } },
{
url: 'application1',
params: { to: format(TODAY, DATE_FORMAT).toString(), from: format(TODAY, DATE_FORMAT).toString() }
},
{
url: 'application2',
params: {
to: format(endOfWeek(TODAY), DATE_FORMAT).toString(),
from: format(startOfWeek(TODAY), DATE_FORMAT).toString()
}
},
{
url: 'application3',
params: {
to: format(endOfWeek(TODAY), DATE_FORMAT).toString(),
from: format(startOfWeek(TODAY), DATE_FORMAT).toString()
}
}
];
const promises = reportModules.map(
target =>
new Promise(resolve => {
this.notificationService
.getSummary(target.url, target.params)
.pipe(take(1))
.subscribe(
(result: Response) => {
resolve({ target, result });
},
(err: Error) => {
// return reject(err);
}
);
})
);
const observables: Observable<any>[] = promises;
merge(...observables).subscribe((results) => { ... }
如何解决错误let observables: Observable<any>[]
'observables' is declared but its value is never read.ts(6133)
Type 'Promise<{}>[]' is not assignable to type 'Observable<any>[]'.
Type 'Promise<{}>' is missing the following properties from type 'Observable<any>': _isScalar, source, operator, lift, and 6 more.ts(2322)
。
我要在这里执行的操作是先加载第一个电话,然后加载第二个电话,直到承诺结束。
例如,它将在应用程序2之后调用第一个,即application1,它应该一个一个地调用它。
答案 0 :(得分:1)
错误出现在代码的最后两行。您正在将应许列表分配给可观察对象列表。它们不是同一类型的对象。
最简单的解决方法是坚持Promises并使用Promise.all()而不是merge()。