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

Why doesn't Javascript execute the code in sequence?

本文关键字:执行 代码 顺序 Javascript 为什么      更新时间:2023-09-26

>我有这个简单的函数

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初始化为 false pageAttr并尝试使用 articlesCache 创建属性,该属性尚不存在。

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

如果您有权访问 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

Javascript 是异步触发 n 步函数。我建议你阅读这篇文章:

https://developer.mozilla.org/en-US/Learn/Getting_started_with_the_web/JavaScript_basics

https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_and_Using_Callbacks

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise