У меня есть функция ниже:
let updateDevicesStatus = async () => {
getAllConnectedClients()
let teste = getAllDevices()
try {
devicesDB = await teste
} catch (e) {
console.log('deu erro')
}
devicesDB.forEach( (currentDevice) => {
connectedClients.forEach( (currentClient) => {
if (arduinoNM.connected[currentClient].clientID == currentDevice.clientID) {
devicesOnline.push(currentDevice)
} else {
devicesOffline.push(currentDevice)
}
})
})
}
getAllDevices()
извлечение некоторых данных из БД, поэтому выполнение занимает больше времени.
Node.JS выполняет все эти вызовы асинхронно, что вызывает исключение, говоря, что devicesDB не определена.
Я пытался использовать async / await, чтобы updateDevicesStatus()
ожидал getAllDevices()
выполнения, но этого не происходит ...
Что я делаю не так?
getAllDevices()
не объявлено с асинхронным. Должен ли я сделать это?
EDIT:
Функция getAllDevicesPromise ():
function getAllDevicesPromise() {
return new Promise((resolve,reject) => {
resolve(getAllDevices())
})
}
Функция getAllDevices ():
function getAllDevices() {
let rst
let query = Arduino.where({})
query.find( (err, results) => {
if (err) return console.error('[ERR] Erro buscando todos os dispositivos do banco para WEB.')
rst = results
})
return rst
}
Я тестирую эти функции, как показано ниже:
let test = await getAllDevicesPromise()
console.log(test)
Но он все еще возвращается неопределенным. Есть что-то еще, что мне нужно сделать?