Promise의 간편한 AMD 로더
3787 단어 Promise
var registry = {
promises: { },
resolves: { },
getDependencyPromise: function(name) {
if (!this.promises[name]) {
var resolves = this.resolves;
this.promises[name] = new Promise(function(resolve, reject) {
resolves[name] = resolve;
});
}
return this.promises[name];
},
resolve: function(name, value) {
this.getDependencyPromise(name); // creates promise if necessary
this.resolves[name](value);
delete this.resolves[name];
}
};
function define(name, deps, definition) {
require(deps, function() {
registry.resolve(name, definition.apply(this, arguments));
});
}
function require(deps, definition) {
var promises = deps.map(registry.getDependencyPromise, registry);
Promise.all(promises).then(function(result) {
definition.apply(this, result);
});
}
사용 방법은 다음과 같다.
define('framework', ['component', 'library'], function(cmp, lib) {
return { init: 'initialized:
component: ' + cmp.description +
'
and library: ' + lib.version};
});
require(['framework'], function(framework) {
alert(framework.init);
});
define('library', [], function() {
return { version: '0.0.1' };
});
define('component', ['library'], function(lib) {
return { description: 'uses library version: ' + lib.version };
});
원문 주소http://curiosity-driven.org/amd-loader-with-promises
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Promise 단순화텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.