Я пытаюсь выполнить обещания пользователя для синхронного выполнения.
Я следовал инструкциям, перечисленным на форуме github, но безуспешно.
getData2(user: string, guid: string) {
return new Promise<any>((resolve, reject) => {
//doing some stuff in here
resolve();
});
}
getData1(user: string, guid: string) {
return new Promise<any>((resolve, reject) => {
//doing some other stuff in here
resolve();
});
}
userCheck(user: string) {
//checking some array in here
}
userMethod(someArray: any){
var i: any;
var length = someArray.length;
for (i=0; i < length; i++){
this.getData1(someArray[i], userID).then(
this.getData2(someArray[i], userID)).then(
this.userCheck(someArray[i]));
});
})}
}
Идея состоит в том, что я хочу сначала закончить getData1
, а затем сделать getData2
, а затем userCheck
.
Когда я делаю это так, как изложилвыше я получаю сообщение об ошибке:
Argument of type 'void' is not assignable to parameter of type '(value: {}) => {} | PromiseLike<{}>'.
После исправления этой проблемы я столкнулся с тем фактом, что функция userCheck
все еще выполняется до завершения getData2
.Я не уверен почему.функция getData2
выглядит следующим образом.
getCCData(user: string, id: string){
console.log('grabbing CC information', id, user);
return new Promise((resolve, reject) =>
{
this._apiService.getAssertion(id).toPromise().then(assert =>
{
return this._apiService.getToken(assert.toString(), user);
}).then((data: any) =>
{
return this._apiService.ccMeta(data.access_token.toString(), id);
}).then(parseString(Promise)).then((information: any) =>
{
this.ccData.push(
{
key: 'userStatus',
value: information.entry
});
});
resolve();
});
}
Я не уверен, что это правильный способ разработки этой функции.Любое дополнительное понимание было бы здорово.