tuzhu_req.js 處理檔案請求載入非同步同步功能,仿效百度圖片首頁效果製作
/*土著人开发的require组件 @土著人 (http://www.tuzhuren.com)*/ ! function() { function e() {} Function.prototype.bind || (Function.prototype.bind = function(t) { var n = this; if ("function" != typeof n) throw new TypeError("Function.prototype.bind called on incompatible " + n); var o = r.call(arguments, 1), i = function() { if (this instanceof i) { var e = n.apply(this, o.concat(r.call(arguments))); return Object(e) === e ? e : this; } return n.apply(t, o.concat(r.call(arguments))); }; return n.prototype && (e.prototype = n.prototype, i.prototype = new e, e.prototype = null), i; }); var t = Array.prototype, r = t.slice; }(); var require, define; ! function(e) { function t(e, t) { if (!(e in u)) { u[e] = !0; var r = document.createElement("script"); if (t) { var o = setTimeout(t, require.timeout); r.onerror = function() { clearTimeout(o), t() }, r.onreadystatechange = function() { "complete" == this.readyState && clearTimeout(o) } } return r.type = "text/javascript", r.src = e, n.appendChild(r), r; } } function r(e, r, n) { var i = o[e] || (o[e] = []); i.push(r); var a, u = c[e] || {}, s = u.pkg; a = s ? p[s].url : u.url || e, t(a, n && function() { n(e); }); } function isFunction(it) { return Object.prototype.toString.call(it) === '[object Function]'; } function isArray(it) { return Object.prototype.toString.call(it) === '[object Array]'; } var n = document.getElementsByTagName("head")[0], o = {}, i = {}, a = {}, u = {}, c = {}, p = {}; define = function(name, deps, callback) { if (isArray(deps) && isFunction(callback)) { deps = callback; } i[name] = deps; var r = o[e]; if (r) { for (var n = 0, a = r.length; a > n; ++n) r[n](); delete o[name]; } }, require = function(e) { e = require.alias(e); var t = a[e]; if (t) return t.exports; var r = i[e]; if (!r) return false; t = a[e] = { exports: {} }; var n = "function" == typeof r ? r.apply(t, [require, t.exports, t]) : r; return n && (t.exports = n), t.exports; }, require.async = function(t, n, o) { function a(e) { for (var t = e.length - 1; t >= 0; --t) { var n = e[t], p = c[n]; p && "deps" in p && a(p.deps), n in i || n in s || (s[n] = !0, l++, r(n, u, o)); } } function u() { if (0 == l--) { var r, o, i = []; for (r = 0, o = t.length; o > r; ++r) try { i[r] = require(t[r]) } catch (a) {} n && n.apply(e, i); } } "string" == typeof t && (t = [t]); for (var p = t.length - 1; p >= 0; --p) t[p] = require.alias(t[p]); var s = {}, l = 0; a(t), u(); }, require.resourceMap = function(e) { var t, r; r = e.res; for (t in r) r.hasOwnProperty(t) && (c[t] = r[t]); r = e.pkg; for (t in r) r.hasOwnProperty(t) && (p[t] = r[t]); }, require.loadJs = function(e) { t(e); }, require.loadCss = function(e) { if (e.content) { var t = document.createElement("style"); t.type = "text/css", t.styleSheet ? t.styleSheet.cssText = e.content : t.innerHTML = e.content, n.appendChild(t); } else if (e.url) { var r = document.createElement("link"); r.href = e.url, r.rel = "stylesheet", r.type = "text/css", n.appendChild(r); } }, require.alias = function(e) { return e }, require.timeout = 5e3, define.amd = { jQuery: !0, version: "1.0.0" } }(this); ! function() { (function() { var widgets = [], nameIdxMap = {}, callbacks = [], remainings = 0; require.widget = { register: function(name) { var idx = nameIdxMap[name]; if (idx == undefined) { nameIdxMap[name] = widgets.length; widgets.push(1); remainings++; } else { widgets[idx]++; } }, ready: function(callback, ctx) { callbacks.push({ func: callback, context: ctx }); if (remainings < 1) { _ready(); } }, loaded: function(name) { var idx = nameIdxMap[name], num = widgets[idx] - 1; widgets[idx] = num; if (num == 0 && remainings) { remainings--; } if (remainings < 1) { _ready(); } } }; function _ready() { var callback; while (callback = callbacks.pop()) { callback.func.call(callback.ctx); } } })(); }();
希望本文能為大家學習使用javascript處理文件請求載入異步同步功能有所幫助。