0

これはおそらく非常に基本的なことですが、私のケースに対する明確な答えが見つからないようです。

ワークフローの残りの部分を続行する前に、1 つの機能を確実に実行して完了する方法を知りたい

アラートの下のスクリプトでは、スクリプトが up.settings.multipart_params に入る前に getsS3policy(file) を完了する必要がある場合、「1」、「3」、「2」として発生します。

preinit: {

            UploadFile: function (up, file) {
                getS3Policy(file);
                alert("3");
                    up.settings.multipart_params = {
                        key: path,
                        filename: file.name,
                        AWSAccessKeyId: 'AKIAJIRIA6XD4V5MFWCA',
                        acl: 'private',
                        policy: policy,
                        signature: signature,
                        success_action_status: '201'
                    }

            }
        },

    });
    function getS3Policy(file) {
        alert("1");
        data = { 'alc': 'private', 'bucket': 'PhotojimaDev', 'key': path, 'file': file.name };
        $.ajax({
            url: '/desktopmodules/uploader/API/upload/getPolicy',
            type: 'POST',
            data: data,
            success: function (response) {
                console.log(response);
                if (response) {
                    policy = response.policy;
                    signature = response.signature;
                    alert("2");
                }
                else {
                    return "Error";
                }
            }
        });
4

2 に答える 2

1

ajax呼び出しのsuccess機能はコールバックです。これは、データが受信されると実行されるものであり、そのコールバックにあなたを入れた場合、データが受信up.settings.multipart_paramsされたときにのみ実行されます。

$.ajax({
        url: '/desktopmodules/uploader/API/upload/getPolicy',
        type: 'POST',
        data: data,
        success: function (response) {
            console.log(response);
            if (response) {
                policy = response.policy;
                signature = response.signature;
                alert("2");
                up.settings.multipart_params = {
                    key: path,
                    filename: file.name,
                    AWSAccessKeyId: 'AKIAJIRIA6XD4V5MFWCA',
                    acl: 'private',
                    policy: policy,
                    signature: signature,
                    success_action_status: '201'
                }
            }
            else {
                return "Error";
            }
        }
    });
于 2013-02-08T22:18:49.860 に答える
1

jQuery ajax のコールバックを探しています。http://api.jquery.com/jQuery.ajax/を参照してください。

于 2013-02-08T22:15:55.790 に答える