$ .when()。done()在完成之前触发done函数

时间:2016-11-17 21:21:37

标签: javascript jquery .when

我有一个这样的页面:

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()函数。

谢谢。

1 个答案:

答案 0 :(得分:2)

$.when根本不会调用您的回调。你是自己做的:

//                                                        vv
$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).done(finalCall());
//                                                        ^^

将其更改为

$.when(ajaxcall1(),ajaxcall2(),ajaxcall3()).then(finalCall);

其中函数实际传递给promise方法,并且它可以工作(假设你的ajax函数返回promises)。

相关问题