比如说:
var getSome = function(key) {
var result = '';
result = $同步请求(key);
return result;
}
如果上面的“$同步请求”变成“$异步请求”的话,要怎么才能达到同样的效果?(可以用不同的思路,但要求getSome(key)返回的结果是请求成功后的数据。)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
建议去看看 es6 的 generator
你这么做的意义在哪?既要同步的效果有要异步实现?
你的这个要求几乎是不可能满足的。因为这个要求描述的就是一个同步函数。
除非你用个死循环不断地查询异步结果是否拿到了。然而这样写代码肯定不行啊。
所以你只能这样写:
var getSome = function(key, callback) {
};
更新:更正:确实实现不了,而不是“几乎不可能”。前面说的用死循环去查询异步结果是不行的。我想当然了。
至于另一位答主说的用generator,我感觉也不能实现你要求的接口形式。如果有朋友能写出来,请提供学习一下。
再次更新:@qlee 给出了用ES6生成器的方法,虽然与要求的函数接口不同,但是非常有参考价值。
基于JS的EventLoop事件循环机制,同步代码块没有执行完返回前,异步请求时不会被执行的~~
所以你的需求是不能实现的~
使用回调函数或事件通知机制来实现吧
只要你函数里面调用了异步操作,你就甩不开异步回调了
就像 @manxisuo 说的
几乎不可能满足你只能这样:
顶多你用了promise
但是你还带需要回调
既然都ES6 generator了,不如也来个ES7 async/await:
是用异步ajax请求,里面的值再经过一个方法传出来
用这个库呗https://github.com/tj/co