json-loader.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //多媒体显示模块
  2. var json_loader = function (option, success) {
  3. var object = new JsonLoader(option);
  4. success();
  5. return object;
  6. }
  7. function JsonLoader(option) {
  8. this.markControl = option.markControl;
  9. this.jsonServer = option.jsonServer;
  10. }
  11. JsonLoader.prototype.build = function (task, callback) {
  12. var self = this;
  13. if (task != undefined && task.jsonUrl != undefined && task.paperUrl != undefined) {
  14. // TODO-测试代码,读取固定的json文件
  15. // var result = '[{"mainNumber": 2,"subNumber": 10,"body": {"sections": [{ "blocks":[{"type": "text","value": "我是题目我是题目我是题目"}]}]},"answer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"}]},{"blocks":[{"type": "audio","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/19/3_8_19_15748452552644264.mp3"}]}]},"studentAnswer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"},{"type": "image","value": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582709869784&di=39683b1330bd09bebd93c95fe925ca70&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10108%2F170%2Fw600h370%2F20190222%2Fd6de-htknpmh2595255.jpg"},{"type": "text","value": "我是答案答案daan"}]}]}}]';
  16. // task.jsonData = JSON.parse(result);
  17. // callback();
  18. let promises = []
  19. promises.push(new Promise((resolve, reject) => {
  20. $.ajax({
  21. type: "GET",
  22. url: self.jsonServer + task.paperUrl,
  23. dataType: "json",
  24. success: function (data) {
  25. task.paperData = data
  26. resolve()
  27. },
  28. error: function () {
  29. console.log('paper load error:' + self.jsonServer + task.paperUrl);
  30. reject('paper load error');
  31. }
  32. });
  33. }))
  34. promises.push(new Promise((resolve, reject) => {
  35. $.ajax({
  36. type: "GET",
  37. url: self.jsonServer + task.jsonUrl,
  38. dataType: "json",
  39. success: function (data) {
  40. task.jsonData = data;
  41. resolve();
  42. },
  43. error: function () {
  44. console.log('json load error:' + self.jsonServer + task.jsonUrl);
  45. reject('json load error');
  46. }
  47. });
  48. }))
  49. Promise.all(promises).then(() => {
  50. callback()
  51. }).catch(error => {
  52. callback(error)
  53. })
  54. }
  55. }