diff --git a/src/utils/p5PreloadHelper.js b/src/utils/p5PreloadHelper.js index a0a460bc5..cba16d337 100644 --- a/src/utils/p5PreloadHelper.js +++ b/src/utils/p5PreloadHelper.js @@ -20,8 +20,20 @@ export default function registerPreload(obj) { const fn = obj[key]; preloadFn[key] = function preloads(...args) { - return fn.apply(obj, [...args, function doingPreloads() { + let originCallback = null; + let argLen = args.length; + if (typeof args[argLen - 1] === 'function') { + // find callback function attached + originCallback = args[argLen - 1]; + argLen -= 1; + } + return fn.apply(obj, [...args.slice(0, argLen), function doingPreloads() { const targetPreloadFn = '_decrementPreload'; + try { + if (originCallback) originCallback(); + } catch (err) { + console.error(err); + } if (window[targetPreloadFn]) return window[targetPreloadFn](); return null; }]); diff --git a/webpack.test.babel.js b/webpack.test.babel.js index b8cd2379b..06c4b402d 100644 --- a/webpack.test.babel.js +++ b/webpack.test.babel.js @@ -5,6 +5,7 @@ import { existsSync, mkdirSync, writeFileSync, lstatSync } from 'fs'; import { join } from 'path'; +import assert from 'assert'; import merge from 'webpack-merge'; import common from './webpack.common.babel';