我正在尝试解决我的问题,但是我已经没有想法了。 我想创建函数以根据类型变量返回值数组。
我想检查发送给函数的参数是字符串数组还是Webelements数组,我想将此数组返回给其他函数以对其进行排序。
这是我的代码:
private static returnByType(unSortedElements) {
var i = 0;
var unSorted = [];
if (typeof unSortedElements[0] === 'string') {
unSorted = unSortedElements;
return unSorted;
} else {
return unSortedElements.each((eachName) => {
eachName.getText().then((name) => {
unSorted[i] = name;
i++;
})
})
}
}
如果我将字符串数组传递给此函数,它将返回带有该字符串的数组,但是当我在那里传递Webelements列表时,我得到一个空数组(在else块中)。 我应该如何从else块返回unSorted?
答案 0 :(得分:1)
如果您正在处理承诺,则不能仅仅返回价值,它永远是一个承诺。您的代码可能应该是这样的:
private static returnByType(unSortedElements) {
var i = 0;
var unSorted = [];
if (typeof unSortedElements[0] === 'string') {
unSorted = unSortedElements;
// Promise.resolve(unSorted) to unify with else
return Promise.resolve(unSorted);
} else {
// return type will be Promise<[]>
return Promise.all(unSortedElements.map((eachName) => eachName.getText()));
}
}
该函数的返回类型现在为Promise<[]>
。然后,您可以像这样使用它:
returnByType(args).then((unsorted) => ...);
Promise.all()
,请参考documentation。Promise.resolve()
,请参考documentation。