ionic + Cordovaで連続でポップアップを開いたときに挙動がおかしくなるのを防ぐ

ionic + cordovaでionicPopupを使ってポップアップを実装したとき、1つ目のポップアップを閉じてすぐに2つ目のポップアップを開くとフォーカスがおかしくなる。

function a() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
}
]
});
}
function b() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
onTap: function(e) {
popup.close();
a();
}
}
}
]
});
}
b();

問題はpopup.close()と次のポップアップのレースコンディションのよう。
次のようにtimeoutを十分にとればほぼうまくいく。

function a() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
}
]
});
}
function b() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
onTap: function(e) {
popup.close();
$timeout(function () {
a();
}, 250);
}
}
}
]
});
}
b();

RDSの時刻設定

初期状態では日本時間になっていないので日本時間にする方法。

1.RDSダッシュボードからパラメータグループを選ぶ。

2.適当なパラメータグルームを作成して編集ボタンを押す

f:id:KongariBug:20160102084438p:plain:w300

3.time_zone を Asia/Tokyoにする。

f:id:KongariBug:20160102084020p:plain:w300

これでできた。

mysql> show variables like '%time_zone%';
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| system_time_zone | UTC        |
| time_zone        | Asia/Tokyo |
+------------------+------------+
2 rows in set (0.01 sec)
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-01-02 08:31:58 |
+---------------------+
1 row in set (0.00 sec)

プロフィール

主にRailsエンジニアのフリーランス。AWSなどのサーバ・運用系の知識もあります。
趣味は対戦ゲーム(特に格闘ゲーム)。お仕事のご依頼、ご相談は kongaribug😡gmail.com まで。

保有資格

  • データベーススペシャリスト(IPA)
  • ネットワークスペシャリスト(IPA)
  • AWS Certified Solutions Architect – Associate (SAA) 【2018/04/30 – 2020/04/30】
  • TOEIC IP 815点【2015年 期限切れ】

技術項目

経験多め

  • Ruby
  • Rails
  • MySQL
  • AWS
  • Linux
  • jQuery
  • Bootstrap
  • Sass
  • Atlassian

経験あり

  • Angular
  • React
  • ionic
  • D3.js
  • PostgreSQL
  • C
  • C++
  • PHP
  • webpack
  • node
  • Docker

SNS

ほしいものリスト

http://amzn.asia/5zRK6ms