При попытке подписаться на результат forkJoin внутри функции onInit я получаю следующую ошибку:
ошибка TS2349: Невозможно вызвать выражение, тип которого не имеет подписи вызова. Тип '((следующий: (значение: Result []) => void, promiseCtor ?: PromiseConstructorLike) => Promise) | ((следующее: (значение: Account []) => void, promiseCtor ?: PromiseConstructorLike) => Promise) 'не имеет совместимых подписей вызовов.
getAccounts возвращает наблюдаемую учетную запись [], getResults возвращает наблюдаемый результат []. Когда обе загрузки завершены, я пытаюсь получить подробные результаты учетной записи из другой базы данных, используя accessToken учетных записей, полученных из функции getAccounts, чтобы я мог добавить результаты в подробные учетные записи.
Короче говоря, я пытаюсь добиться этого:
let var = getAccountsSimplified();
let var2 = getAllResults();
if both are finished{
foreach(acc in var) {
account = getDetailedAccount(acc.id)
var ownedResults = var2.where(userid === acc.id)
account.results = ownedResults
}
}
Это то, что я пытался до сих пор, но по какой-то причине это вызывает ошибку, упомянутую выше. По какой-то причине console.log(user)
работает нормально, поэтому я совершенно заблудился при ошибке.
const tasks$ = [
this.aus.getAccounts(this.auth.token),
this.rs.getResults(this.auth.token)
];
forkJoin(tasks$).subscribe(
value => {
const userList = value[0];
const resultList = value[1];
userList.forEach((acc: Account) => {
this.aus.getUserDetails(acc.access_token).subscribe((user: User) => {
if (user != null) {
console.log(user);
}
});
});
}
);
Сигнатуры вызываемых функций:
getAccounts(auth: string): Observable<Array<Account>> {
}
getResults(auth: string): Observable<Array<Result>> {
}
getUserDetails(token: string): Observable<User> {
}
Обновление
После добавления предложения Курта я теперь получаю
Аргумент типа 'MonoTypeOperatorFunction <[Account [], Result []]>' нельзя назначить параметру типа ' OperatorFunction <(Observable | Observable) [], [Account [], Result []]> '. Типы параметров «источник» и «источник» несовместимы. Тип «Observable <(Observable | Observable) []>» нельзя назначить типу «Observable <[Account [], Result []]>». В типе '(Observable | Observable) []' отсутствуют следующие свойства из типа '[Account [], Result []]': 0, 1ts (2345)
Кажется, что существует проблема с возвращенным типом forkjoin.
Update 2
Оказалось, что удаление массива задач $ и добавление функций непосредственно в forkjoin решило проблему.