I am working on an async script loader using bluebird, and I am struggling to pass an error where I can catch it.
When the file loads, I call my method with the name declareas follows:
declare("storage", [
{"name": 'util', "src": '../src/util.js'}
], function (util) {
var storage = {};
return storage;
});
C declare:
declare = function (name, dependency_list, callback) {
var resolver;
function digestDependencyArray(my_dependency_array) {
var i, len, response_array;
len = my_dependency_array.length;
for (i = 0, response_array = []; i < len; i += 1) {
response_array[i] = my_dependency_array[i];
}
return Promise.all(response_array);
}
function resolveDependencyArray(my_fullfillment_array) {
var return_value = callback.apply(window, my_fullfillment_array);
if (!return_value) {
return_value = window.exports;
}
resolver(return_value);
}
my_lib.callback_dict[name] = my_lib.callback_dict[name] ||
new Promise(function (resolve) {
resolver = resolve;
if (dependency_list.length === 0) {
return resolver(callback.apply(window));
}
return request(dependency_list)
.then(digestDependencyArray)
.then(resolveDependencyArray)
.catch(console.log);
});
};
All this works fine, except that I do not want to have an instruction catchat this moment, because error handling should be done in another module (console.log is just a flag).
:
, declare ? , catch declare , - , - .
!
EDIT:
:
request([{"name": "foo", "src": "path/to/foo.js"}])
.spread(foo) {
})
.catch(function (e) {
console.log(e);
})
request , , declare. - ( ). , catch -...
2:
, :
function resolveDependencyArray(my_fullfillment_array) {
var return_value = callback.apply(window, my_fullfillment_array);
if (!return_value) {
return_value = window.exports;
}
return return_value;
}
function handler() {
if (dependency_list.length === 0) {
Promise.resolve(callback.apply(window));
} else {
return request(dependency_list)
.then(digestDependencyArray)
.then(resolveDependencyArray)
.catch(function (e) {
reject(e);
});
}
}
clappjs.callback_dict[name] = clappjs.callback_dict[name] || handler();
, , undefined, :
request(["foo", "bar", "baz"]).spread(function (foo, bar, baz) {
console.log(foo);
console.log(bar);
console.log(baz);
});
new Promise .