function load()

in lucid/scratch/js/src/load.js [115:156]


function load(url, namespace) {

  // We will to create a namespace if we don't have one.
  let ns = namespace != null ? namespace : Date.now() + "" + Math.random();

  // Create a unique ID for this request
  let requestID = "namespace:" + ns + ", url:" + url + ", random:" + Date.now() + "" + Math.random();
  suppress.set(requestID, false);

  // If we have a previous request in this namespace, mark it as suppressed so
  // that the promise is never resolved. Then we reset the current namespace to
  // the current request.
  if (namespaces.has(ns)) {
    const pendingRequestID = namespaces.get(ns);
    suppress.set(pendingRequestID, true);
  }
  namespaces.set(ns, requestID);

  return new Promise((resolve, reject) => {
    let p;
    if (Array.isArray(url)) {
      const promises = url.map(u => _loadURL(u));
      p = Promise.all(promises);
    } else {
      p =  _loadURL(url);
    }
    p
      .then(val => {
        //check to see if we've suppressed this request.
        if (!suppress.get(requestID)) {
          resolve(val);
        }
      })
      .catch(error => {
        //check to see if we've suppressed this request.
        if (!suppress.get(requestID)) {
          reject(error);
        }
      });

  });
}