我对 javascript 中的回调式编程还很陌生。 有没有办法通过回调强制代码等待函数调用完成? 让我解释。 以下函数接受一个数字并返回基于它的结果。
function get_expensive_thing(n) {
return fetch_from_disk(n);
}
到目前为止,很容易。
但是当 fetch_from_disk
而是通过回调返回其结果时我该怎么办?
像这样:
function get_expensive_thing(n) {
fetch_from_disk(n, function(answer) {
return answer; // Does not work
});
}
以上不起作用,因为 return
在匿名函数的范围内,
而不是 get_expensive_thing
函数。
有两种可能的“解决方案”,但都不够。
一种是将 get_expensive_thing
重构为自身通过回调回答:
function get_expensive_thing(n, callback) {
fetch_from_disk(n, function(answer) {
callback(answer);
});
}
另一种是重新编码fetch_from_disk
,但这不是一个选项。
怎样才能达到预期的效果
同时保持 get_expensive_thing
的预期行为
-- 即等到 fetch_from_disk
调用回调,然后返回那个答案?
最佳答案
浏览器 Javascript 中几乎没有“等待”。这都是关于回调的。请记住,您的回调可以是“闭包”,这意味着从创建它们的上下文中“捕获”局部变量的函数定义。
如果您接受这种做事方式,您会变得更快乐。
关于javascript - 在 Javascript 中暂停直到调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145356/