Я считаю, что это потому, что функция из map
не является async , поэтому вы не можете ждать в ее возвратной инструкции. Он компилируется с этой модификацией:
const someFunction = async (myArray) => {
return myArray.map(async (myValue) => { // <-- note the `async` on this line
return {
id: "my_id",
myValue: await service.getByValue(myValue)
}
});
};
Итак ... невозможно дать рекомендации, не видя остальной части вашего app, но в зависимости от того, что вы пытаетесь сделать, либо сделайте функцию inner асинхронной, либо попытайтесь создать некоторую другую архитектуру для этого блока.
Обновление: мы могли бы получить на следующий день ожидается следующий уровень: https://github.com/MylesBorins/proposal-top-level-await
После некоторого googling я обнаружил, что при подключении к SQLite плохо использовать разные соединения. См.
http://touchlabblog.tumblr.com/post/24474398246/android-sqlite-locking
Установите максимальную мощность пула в 1 и попробуйте .
Должно быть только одно соединение с вашим приложением. вы можете использовать это для обеспечения.
public class SqliteHelper {
private static Connection c = null;
public static Connection getConn() throws Exception {
if(c == null){
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:D:/test.db");
}
return c;
}
}
Каждый раз, когда вы устанавливаете соединение, обязательно закройте его после завершения работы. Он работал для меня, как если вы используете
Connection con = null;
PreparedStatement pst = con.prepareStatement("...query... ");
/*
do some stuff
*/
pst.executeQuery();
pst.close();
con.close();
Попробуйте @Transactional(readonly=true)
для тех методов, которые только читают. Возможно, это работает для вас.
Обратите внимание, что это может случиться, если вы случайно забудете закрыть свое соединение:
Connection connection;
try {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(QUERY);
if (resultSet.next()) { /* do something */ }
catch (SQLException e) { /* handle exception */ }
finally {
if (connection != null) {
try {
connection.close(); // <-- This is important
} catch (SQLException e) {
/* handle exception */
}
}
}
Если первое подключение к базе данных может работать хорошо после запуска сервера, последующие запросы могут не совпадать, в зависимости от того, как пул соединений настроен.