http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html