Хорошо, я изучил ваш код, но то, что вы делаете, не называется обещанием, вы объективно возвращаете функцию вместо использования .then
для разрешения обещания.
ПроверкаAPI GetMacAddress здесь также getCurrentPosition не использует обещания, вместо этого он использует обратные вызовы, здесь api .
Что вы можете сделать, чтобы использовать Promise.all
в том, что вы можете заключить getCurrentPosition
в обещание, а затем использовать promise.all
с DeviceInfo.
заключить getposition
в обещание:
const getPosition = (options) => {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}
теперь используйте Promise.all
вот так:
const getData = async () => {
const [macAddress, currentPos] = await Promise.all([
DeviceInfo.getMACAddress(),
getPosition(),
]);
// use macAddress and currentPosition here.
}
Теперь macAddress
и currentPos
являются выходами функций getMACAddress
и getCurrentPosition
.
Если вы не используете асинхронный режимфункции, то вы можете сделать следующее:
Promise.all([
DeviceInfo.getMACAddress(),
getPosition(),
]).then((macAddress, pos) => {
// access macAddress and pos in this func
}).catch((error) => {
// access any error here
})