0
我必须等待0-n个承诺。我目前正在检查是否有0个,1个或更多的承诺,然后再打电话没有承诺,一个承诺或Promise.All。处理0-n承诺的模式?
对我来说,这看起来很差,return this._createItemAndReloadItems(logItem)
部分重复三次。有没有更好的模式来实现这一目标?
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); });
}
}
有没有更好的模式来处理动态承诺量?
Well'Promise.all'很好地适用于承诺的空元素和单元素数组,所以为什么不在任何情况下都使用它呢? – Bergi
哦,我对文档感到困惑,至少需要两个参数。酷,它作为一个阵列与0,1,甜蜜的承诺:-) –
你读过哪些文档?它只有一个参数 - 可迭代的。 – Bergi