最重要的部分是如何使用JavaScript处理异步数据.有一些经过很好测试的解决方案:功能和承诺.
在两个cass中,Reader应该有一个构造函数来分配这样的数据:
function Reader(data) {
this.data = data;
}
回调方法需要一个具有回调函数的工厂函数.
function getReader(url,callBack) {
Ajax.success(function(data){
callBack( new Reader(data) );
});
}
并使用它
getReader(url,function(reader) {
reader.searchData();
});
Promise -approach不需要立即回调,所以结果可以存储在一个变量中,并作为一个变量传递,这个变量有一些优点:
function getReaderPromise(url) {
return new Promise( function( resolve,reject ) {
Ajax.success(function(data){
resolve( new Reader(data) );
});
});
}
然而,使用承诺通常需要调用那个承诺的功能:
getReaderPromise(url).then( function(reader) {
reader.searchData();
});
// Fat arrow Syntax
getReaderPromise(url).then( (reader) => {
reader.searchData();
});
在将来,您可以使用具有收益的ES6发生器的Promises来消除回调
let reader = yield getReaderPromise( url );