SafeLoader.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {DelayTask} from '../common/DelayPromise';
  2. import ResouceLoadError from '../common/ErrorDefine';
  3. let SafeLoader = (
  4. function()
  5. {
  6. let _load=function(resources)
  7. {
  8. return new Promise(function(resolve,reject){
  9. cc.loader.load(resources, (error, res) => {
  10. if (error) {
  11. reject(new ResouceLoadError(error,res));
  12. } else {
  13. resolve(res);
  14. }
  15. });
  16. });
  17. };
  18. let safeLoad = function (resources, callback, curTimes,maxTime,timeout) {
  19. Promise.race([_load,DelayTask(timeout || 1000)])
  20. .then(function(res)
  21. {
  22. callback && callback(null,res);
  23. })
  24. .catch(function(err){
  25. if(curTimes + 1 > (maxTime || 2))
  26. {
  27. callback && callback(err.getError(),err.getRes());
  28. }
  29. else
  30. {
  31. safeLoad(resources, callback, curTimes + 1,maxTime);
  32. }
  33. }
  34. );
  35. };
  36. return {
  37. safeLoad:safeLoad,
  38. };
  39. }
  40. )();
  41. export default SafeLoader;