2013-02-08 2 views
0

Это, вероятно, очень простой, но я не могу найти четкого ответа на мой случай.Функция выполнения jQuery после завершения

Я хотел бы знать, как обеспечить, чтобы одна функция выполняется и полное перед остальной частью рабочего потока может продолжать

в моем сценарии под огнем оповещения, как «1», «3», «2 ", где я хотел бы getsS3policy (файл) будет завершена до того, как сценарий шаги в up.settings.multipart_params

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"; 
       } 
      } 
     }); 

ответ

1

Функция вашего вызова ajax - это обратный вызов. Это то, что выполняется после получения данных, если вы положили 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"; 
      } 
     } 
    }); 
+0

Спасибо, я пробовал этот подход раньше, но по какой-то причине, когда я делаю так, amazon s3 возвращает ошибку, говорящую, что «ключ» не может быть найден в запросе POST. Глядя на запрос, единственными значениями, которые входят в запрос, являются «имя» и «имя файла». Я понял, что область действия кода отсутствует, поэтому я решил переписать ее так, как она найдена в моем вопросе. –

Смежные вопросы