为什么Javascript不按顺序执行代码?

时间:2016-04-20 22:17:39

标签: javascript

我有这个简单的功能

function getArticles(page){
  page = page || 1;
  loading = false;
  var articlesCache = getArticlesCache(page);
  if(articlesCache){
    articles = articlesCache.data;
  }else{
    make a request and then save the cache;
  }
  loading = false;
  pageAttr = {
    currentPage : articlesCache.current_page
    lastPage : articlesCache;last_page
  }
}

如果我执行此操作,loading初始化为falsepageAttr尝试使用articlesCache创建属性,但尚未存在。

在if / else之前运行的是loadingpageAttr。我知道我可以把这个代码放在if / else中,但我觉得它不好,因为我要做两次,我可以做一次。那么,如何使代码按顺序运行,就像在PHP和其他编程语言中一样?

2 个答案:

答案 0 :(得分:0)

如果您有权访问getArticlesCache函数,则可以修改它以在完成时触发回调。

function getArticlesCache(page, callbackFunction){
  //your existing code.
  callbackFunction();
}

var articlesCache = getArticlesCache(page, function() { 
  //code to execute when getArticlesCache is Finished...
  alert( 'getArticlesCache is Finished!' ); 
});

了解详情:http://mrbool.com/callback-functions-in-javascript/28614#ixzz46PNJgXyH

答案 1 :(得分:0)