所以我有Form * Handler *。js,它有函数:
FormHelper.prototype.foldUnfoldForm = function($container, state) {
main.addressDAO.get(debtorCasePath, viewEntityId).done(function(address) {
return brite.display('case/' + state + 'AddressView', $container, address).done(function() {
$container.children().unwrap();
})
});
};
brite.display会返回一个延迟对象。如果我在console.log这整个代码中,我可以看到它是一个带有所有方法的延迟对象(管道,完成,故障等)。
在Form * Manager *。js中,我只需调用Form * Helper 中的函数*:
FormManager.prototype.foldUnfoldForm = function($container, state) {
return this.FormHelper.foldUnfoldForm($container, state);
};
我的问题是FormManager.prototype.foldUnfoldForm返回undefined。如果我调试或控制日志到此时,返回的值是未定义的。如果我在FormHelper.prototype.foldUnfoldForm中返回的内容未定义,那么如何定义呢?
编辑:延迟对象在解析之前实际返回,这使得它在调用它的函数中未定义。如何避免这种情况并仅在解析时返回延迟对象?我试图对返回的值执行.done,但它表示Uncaught TypeError:无法调用undefined的方法'done',因为它未定义...
答案 0 :(得分:0)
您无法从promise对象的完成回调中返回任何内容。相反,你应该使用.then并返回从函数延迟的原始文件,以便你有一个延迟对象。
FormHelper.prototype.foldUnfoldForm = function($container, state) {
return main.addressDAO.get(debtorCasePath, viewEntityId).then(function(address) {
return brite.display('case/' + state + 'AddressView', $container, address).done(function() {
$container.children().unwrap();
})
});
};
这假设main.addressDAO.get()
正在返回一个jquery promise对象。如果不是,那么我们将需要知道它返回的是什么类型的promise / deferred对象。