我注意到有时候我必须将我的Titanium / Android javascript代码放入setTimeout调用中,以便代码被执行。
我不明白为什么有些代码行有时被完全忽略,当我添加一个500ms的setTimeout时,它们就被执行了。
我从互联网上收集了一些例子:
// alloy_fugitive App:alloy_fugitive
//on android, give a bit of a delay before closing the window...
if (Ti.Platform.osname == 'android') {
setTimeout(function() {
$.detailWindow.close();
}, 2000);
} else {
$.detailWindow.close();
}
// cloudpush代码:tidev.io
CloudPush.enabled = !CloudPush.enabled;
// NOTE: Push.enabled takes a moment to update after you change its value.
setTimeout(syncButtons, 500);
//我的代码派生自Codestrong App:
function startRefresh() {
$.home.add($.loading.getView());
$.loading.start();
loadContent();
$.loading.stop();
//dont know why android needs time...
setTimeout(function (){$.home.remove($.loading.getView());}, 500);
}
真正令我烦恼的是,我从来不知道代码何时会在没有警告的情况下失败,这导致我无休止的调试会话。
我在这里遗漏了什么吗? 记录这些警告和陷阱的任何地方? 钛是如此的错误?
答案 0 :(得分:0)
Titanium基于JavaScript语言,需要编写异步代码。
在你的一个例子中写道:
$.loading.start();
loadContent();
$.loading.stop();
在致电loadContent()
之前,您无法确定$.loading.stop()
中调用的所有操作是否已完成。如果要调用任何异步函数,则必须使用将在操作完成时执行的代码提供回调。