10
AngularJS: เริ่มต้นบริการด้วยข้อมูลแบบอะซิงโครนัส
ฉันมีบริการ AngularJS ที่ฉันต้องการเริ่มต้นด้วยข้อมูลอะซิงโครนัสบางส่วน บางสิ่งเช่นนี้ myModule.service('MyService', function($http) { var myData = null; $http.get('data.json').success(function (data) { myData = data; }); return { setData: function (data) { myData = data; }, doStuff: function () { return myData.getSomeData(); } }; }); เห็นได้ชัดว่าสิ่งนี้จะไม่ทำงานเพราะหากมีสิ่งใดที่พยายามโทรหาdoStuff()ก่อนที่myDataจะกลับมาฉันจะได้รับข้อยกเว้นตัวชี้ null เท่าที่ฉันสามารถบอกได้จากการอ่านคำถามอื่น ๆ ที่ถามที่นี่และที่นี่ฉันมีตัวเลือกน้อย แต่ไม่มีคำถามใดที่ดูสะอาดมาก (บางทีฉันอาจขาดอะไรซักอย่าง): บริการติดตั้งด้วย "run" เมื่อตั้งค่าแอพของฉันทำสิ่งนี้: myApp.run(function ($http, MyService) …