используя jquery 1.6. *
Я использую модульный шаблон. Я хочу, чтобы иметь возможность создавать и разрешать дефисы в моем "UNI.obj1" и иметь возможность использовать их, чтобы я мог инициировать поведение в моем объекте "UNI.obj2".
Допустим, у меня есть следующий объект:
var UNI = {};
UNI.obj1 = function() {
// set up a deferred here;
var method1 = function(){
// RESOLVE deferred here
}
var method1A = function(){
window.onload = function(){
method1();
}
}()
}()
UNI.obj2 = function(o) {
var method2 = function(){
// Use the PROMISE of the resolve here
}
}(UNI.obj1);
Определите свой отложенный объект и верните его обещание, затем действуйте на него.
var UNI = {};
UNI.obj1 = function () {
// set up a deferred here;
var def = $.Deferred();
var method1 = function () {
// RESOLVE deferred here
def.resolve();
return def.promise();
}
var method1A = function () {
window.onload = function () {
method1();
}
}()
return def.promise();
}
UNI.obj2 = function (o) {
var method2 = function () {
// Use the PROMISE of the resolve here
o().done(function () {
// it was resolved!
console.log("Resolved!");
});
}()
}(UNI.obj1);
var foo = function () {}()
. Это на самом деле не имеет смысла, потому что вы получите foo
равное undefined
если foo
ничего не вернул. Например, method1A
не определен. Это, возможно, хорошо, вместо этого было Iife. (function(){}())
var UNI = {};
UNI.obj1 = function() {
// set up a deferred here;
var deferred = new $.Deferred();
var method1 = function(){
// RESOLVE deferred here
deferred.resolve('something')
}
}
UNI.obj2 = function(o) {
var method2 = function(promise){
// Use the PROMISE of the DEFERRED? here
// pass promise
}
}
Но я не вижу в вашем вопросе, как вы хотите передать отложенный объект, так как вы сказали, что хотите шаблон модуля, вы могли бы:
UNI.obj1 = function() {
// set up a deferred here;
var deferred = new $.Deferred();
var method1 = function(){
// RESOLVE deferred here
deferred.resolve('something')
}
// module pattern
return {
promise: deferred.promise()
};
// you could also just return the promise, maybe I am misunderstanding your question
// return deferred.promise();
}
UNI.obj2 = function(o) {
var method2 = function(promise){
// Use the PROMISE of the DEFERRED? here
// pass promise
}
// module pattern
return {method2: method2};
}
// Usage
var o1 = UNI.obj1();
var o2 = UNI.obj2();
o2.method2(o1.promise);