From 7a51432738d52e105c7604deab0e6e61b8d0452e Mon Sep 17 00:00:00 2001 From: "Yuuno, Hibiki" Date: Fri, 15 Mar 2019 11:17:46 -0400 Subject: [PATCH] fix preload bugs (#305) --- src/utils/p5PreloadHelper.js | 14 +++++++++++++- webpack.test.babel.js | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) 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';