javascript单线程异步加载的三种方案