【发布时间】:2018-06-06 01:16:15
【问题描述】:
也许我的设计有问题,但我有一个 Ajax 函数
- 为依赖它的下游操作返回一个 Promise
- 但也有一些业务逻辑,需要返回一个数据对象,下游操作也依赖这个对象
例子:
function insertEvent(newEventID, newEventStartTime, newEventEndTime) {
var promise = $.ajax({
type : "post",
dataType : "json",
url : '/myapp/insertEvent',
data : JSON.stringify({'id' : newEventID, 'startTime': newEventStartTime, 'endTime' : newEventEndTime
})
});
promise.then(function(data) {
// some additional business logic...
var resultObj = {'attr1' : attr1, 'attr2' : attr2};
});
return promise; // To outside dependendencies
// But ALSO need to return resultObj to outside dependencies
}
这可能吗?调用insertEvent的函数需要
- 在正确的时间获得结果(仅在 Ajax 完成之后)
-
一旦到了那里,他们就会从这个函数中查看
resultObjvar resultObj = insertEvent(..);
换句话说,如果可能的话,我希望我可以将自定义变量推送到promise 对象中。
【问题讨论】:
-
如果你发现你需要从同一个函数中同步和异步返回,那么你的代码被错误地分解了。
-
您可能只需要链接
return $.ajax(...).then(fn),其中 fn 是一个返回您真正想要的“自定义变量”的函数。这是.then()的一个重要而强大的功能。