I have to wait for 0-n promises. I currently check if I have 0, 1 or more promises and then either call no promise, one promise or Promise.All.
It seems poor style to me, that the return this._createItemAndReloadItems(logItem) part repeats three times. Is there a better pattern to achieve this?
public createItem( logItem: IInteractionLogItem): Promise<IInteractionLogItem[]> {
const userPromises: Promise<{}>[] = [];
if(logItem.Client && logItem.Client.AccountName){
userPromises.push(this._ensureUser(logItem.Client));
}
if(logItem.AssignedTo && logItem.AssignedTo.AccountName){
userPromises.push(this._ensureUser(logItem.AssignedTo));
}
if(logItem.ResolvedBy && logItem.ResolvedBy.AccountName){
userPromises.push(this._ensureUser(logItem.ResolvedBy));
}
if(logItem.Referrer && logItem.Referrer.AccountName){
userPromises.push(this._ensureUser(logItem.Referrer));
}
console.log("SharePointDataProvider.CreateItem: userPromises.length=" + userPromises.length);
if( userPromises.length == 0)
{
return this._createItemAndReloadItems(logItem);
}
else if( userPromises.length == 1)
{
return userPromises[0].then( (value: {}) => { return this._createItemAndReloadItems(logItem); });
}
else
{
return Promise.all(userPromises).then( (value: {}[]) => { return this._createItemAndReloadItems(logItem); });
}
}
Is there a better pattern to deal with the dynamic amount of promises?
Aucun commentaire:
Enregistrer un commentaire