大家好,本人在开发中为了让页面能组件化(可能跟那个web component概念挺像,我也在学vue.js之类的,但学的十分懵逼),把页面分成几部分,每个部分单独写在不同的html文件,每个html文件包含其对应的html,css和js。
这样当我加载一个页面的不同部分的时候我是这样写的:
$(元素1).load(地址1,function(){
$(元素2).load(地址2,function(){
$(元素3).load(地址3,function(){
})
})
})
这个写法运行之后,每个文件的js代码都能运行,但是这种多重嵌套方式我感觉看起来不太美观,而且里边的回调方法一旦报错,浏览器调试工具也没法追踪得了错误。
我试着想用$.when().done()来管理:
$.when(
$(元素1).load(地址1);
).done(function(){
方法
$(元素2).load(地址2);
})
但是这样写像是没等when里边执行完就执行done里边的方法了
所以我想问下有没有好一点的写法。。
通过查jquery API得知$('#dom1').load('url1')返回不是Deferred对象,而是$('#dom1')。因为$.when需要传Deferred对象,意味着 $('#dom1').load('url1')不能作为$.when传参。
推荐使用Q.js: A promise library for JavaScript