我正在尝试解决我的问题,但我没有更多的想法。 我想创建函数来根据类型变量返回值数组。
我想检查发送给函数的参数是否是字符串数组或网络元素数组,并且我想将此数组返回给其他函数以对其进行排序。
这是我的代码:
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++;
})
})
}
}
如果我将字符串数组传递给此函数,它会返回包含该字符串的数组,但是当我传递一个 webelement 列表时,我会得到一个空数组(在 else block 中)。 我应该如何从 else block 返回未排序的?
最佳答案
如果你正在处理 Promise,你不能只返回值,它永远是一个 Promise。你的代码可能应该是这样的:
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 .
关于javascript - 解决 promise 后返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53041227/