js顺序执行两个异步方法
需求场景:[由于某种影响,框架环境不能支持es6的promise语法]
1、第一下拉框需要进行加载字典【已经封装好的方法1】异步
2、加载完成字典之后才能赋值【方法2】
3、另外一个方法需要取到表单中的下拉框的值,作为查询条件进行查询【方法3】
我们想要调用方法3,但是方法2没有执行完成,方法3查询不到结果,所以我们就需要链式调用。
解决方案一:
setTimeout(function () {
//延迟调用方法2,使其加载成功之后,再延迟调用方法3
},1000)
解决方案二:
一直监听表单中的下拉框的值是否有值,如果有值,再进行方法3的调用。
解决方案三:
$.when(func1(file)).done(function () {
……逻辑代码
})
function func1() {
var dfd = $.Deferred();
$.ajax({
type:'post',
url: url
success:function (result) {
……逻辑代码
dfd.resolve();
},
error:function () {
……逻辑代码
dfd.reject();
}
});
return dfd.promise()