我用API用JavaScript编写程序。现在,此API可用于回调,并且支持同步和异步执行模型。
API调用示例:
API.getInfo((err, info) => {
if(err) return processError(err);
doSomethingUseful(info);
})
我有两个API执行器-本地和远程。
本地执行程序示例:
state.info = {...};
API.getInfo = (cb) => cb(null, clone(state.info));
远程执行器示例:
API.getInfo = (cb) => doGet('/info').then(info => cb(null, info), cb)
// express transforms this query to local executor and returns answer
诀窍是API可以像这样调用自己:
API.getOtherInfo = (cb) => {
let part1, part2;
API.getPart1((err, data) => part1 = data);
API.getPart2((err, data) => part2 = data);
cb(null, {part1, part2})
}
在这种情况下,它是同步的,我希望它保持同步。
回调可以支持同步和异步执行模式。
所以现在我想使用现代的javascript,但是不幸的是,根据定义,promise是异步的。除回调外,是否有用于同步和异步执行的现代javascript方法?