相關組件版本:avalon 1.3.6ajax
這個問題一般會在如下情景出現:後端
頁面一加載完就要利用JS動態操縱頁面的DOM元素、爲各種插件賦初值等。api
以ueditor爲例,以往,配合後端渲染模板,直接就把初始的值輸出到頁面,ueditor天然就獲取到初始值了;但改成先後端徹底分離後,初始值須要依賴ajax讀取api得到,而後再調用ueditor的setContent()方法進行賦值,而ueditor的實例化和初始值的獲取這兩個操做是異步執行的(固然也能夠寫成同步執行,利用ueditor的ready()方法便可,但整體來講不太靈活),這樣就形成了一個不穩定的因素:到底在賦初值的時候,ueditor實例化好了沒有呢?異步
爲此,我思索後,得出以下方案:插件
var ue = UE.getEditor('content_editor'); function article_create_getFirstData() { if(typeof(ue) == "object") { initUeditor(); } else { setTimeout('article_create_getFirstData()', 500); } } article_create_getFirstData();
其整體思路是,利用typeof判斷預設變量是否已爲object(即已實例化),若否,則定時從新進行判斷,直到實例化成功後,進行賦初值的操做。code