我有一个这样的页面:
public class Fragment1 extends Fragment {
EditText iet1,iet2,iet3,iet4;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
iet1 = (EditText) getActivity().findViewById(R.id.et1);
iet2 = (EditText) getActivity().findViewById(R.id.et2);
iet3 = (EditText) getActivity().findViewById(R.id.et3);
iet4 = (EditText) getActivity().findViewById(R.id.et4);
}
public Fragment1() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragmento1, container, false);
return rootView;
}
}
出于某种原因,$(document).ready(function() {
$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall());
});
同时向finalCall()
包围的三个电话发起。
我尝试调用对$.when()
函数的引用,如下所示:
finalCall()
但即便如此,它仍然会在前3次完成之前触发该功能。
注意:我不在此处包含这些功能,因为它们不相关。我只需要知道为什么$(document).ready(function() {
$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall);
});
函数会同时触发finalCall()
函数。
谢谢。
答案 0 :(得分:2)
$.when
根本不会调用您的回调。你是自己做的:
// vv
$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall());
// ^^
将其更改为
$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).then(finalCall);
其中函数实际传递给promise方法,并且它可以工作(假设你的ajax函数返回promises)。