我正在编写一个异步 javascript 函数,消费者将调用该函数来获取某些数据。以下是我最初编写的简单实现(为清楚起见,删除了错误处理和其他内容)。
function getData(callback){
if (data is available as a JavaScript object){
callback(data);
}else{
getAsyncData(function(data){
//some transformations on data
callback(data);
});
}
}
需要注意的重要一点是,如果数据已经作为 JavaScript 对象可用,getData 可以快速返回数据。
我想用一个向调用者返回一个承诺对象的实现来替换这个实现。这个小提琴显示了示例实现 - http://fiddle.jshell.net/ZjUg3/44/
问题 - 由于 getData 可以快速返回,即使在调用者使用then方法建立处理程序链之前,getData 是否有可能解决承诺?只是为了模拟这一点,如果我在 setTimeout 函数中调用then方法(延迟为零),则不会调用回调。如果我在 setTimeout 函数之外调用then方法,则会调用回调。我不确定这是否是一个有效的问题或有效的用例。我对 angularjs 开发很陌生,希望能得到您的意见 :)