1 回答

TA贡献1900条经验 获得超5个赞
由于您正在等待回调的结果,我建议Promise从您的getElements函数返回一个 new以及您resolve()在回调中收到的值。然后,当您调用 时getElements,您将需要解决该问题Promise或使用该await符号。该函数将在该点停止并等待Promise解决,但事件循环仍将继续。有关更多信息,请参阅一些文档。
我将在下面编写一个示例,说明使用 aPromise时您的代码可能是什么样子,但是当您调用 时getElements,您需要将关键字放在await它之前。如果你想避免这种情况,你可以在你进入时解析PromisefromobjectCollector并从它的定义中getElements删除async关键字,但你真的不应该妨碍异步 JavaScript。此外,您可能可以稍微缩短代码,因为objectCollector在此示例中看起来像是一个不必要的函数:
const glob = require('glob')
const yamlMerge = require('yaml-merge')
const sleep = require('system-sleep')
let xpath
class Page {
function async getElements(elementId) {
function objectCollector() {
return new Promise((resolve,reject) => {
glob('tests/wdio/locators/*.yml', function (er, files) {
if (er) reject(er)
resolve(yamlMerge.mergeFiles(files))
})
})
}
let xpath = await objectCollector()
return xpath[elementId]
}
}
module.exports = new Page();
添加回答
举报