Javascriptが非同期であることは知っていますが、この場合、何が起こるのかわかりません。
以下の27行目で、関数「GetProducer」を呼び出します。この関数は、後で使用することを目的とした特定のプロデューサーのデータを返すことになっています。ただし、それを統合すると、データが取得される前に28行目のコードが実行されるため(27行目)、未定義になります。
どうしてこれが起こり、それを解決するために何ができるでしょうか?
1. function GetProducer(id) {
2.
3. $.ajaxSetup ({
4. url: "http://localhost/api/v1/producers/" + id,
5. type: "GET",
6. dataType: "json",
7. cache: false,
8. contentType: "application/json"
9. })
10. $.ajax({
11. success: function(data){
12. return data;
13. },
14. error: function(xmlHttpRequest, textStatus, errorThrown) {
15. console.log(xmlHttpRequest);
16. console.log(textStatus);
17. console.log(errorThrown);
18. }
19. }).done(function(data){
20. console.log(data);
21. })
22. }
23.
24. $('.modal-btn').click(function(){
25. var producerId = $(this).attr('id');
26. $('#myModalLabel').html(producerId);
27. var info = GetProducer(producerId);
28. console.log(info); // <--- undefined
29. });