异步函数在没有回调的情况下返回的后果是什么?
我知道你不应该这样做。我的问题是假设 - 我只是想知道这样做会带来什么后果。
对堆栈有害吗?它会导致内存泄漏吗?
例如:
function whatAreMyConsequences(value, callback) {
value++;
if(value > 1000) {
return;
}
callback(null, value);
}
答案 0 :(得分:2)
只要调用代码知道回调可能不会被调用(并且不依赖于它来处理逻辑流程中的某些内容),那么就没有后果。如果未调用回调,则内存泄漏的可能性不会太大或更小。无论是否被调用,它都不会对堆栈产生净影响。
作为参数传递的函数只是接收函数的参数。接收功能可以决定用该功能做任何想做的事情。它可以永远,永远或有时称之为。
当然,调用者会期待某种行为,因此接收函数可以阻止其合同结束,或者调用者的代码将无法正常工作,但这样做是正确的。只是纠正编程逻辑。
事实上,拥有一个接受四个回调的函数是完全有效的编程,并且它根据发生的事情或其他被调用的参数决定调用四个中的哪一个。
看看承诺:
$.ajax(...).then(mySuccessHandler, myErrorHandler);
这两个回调中只有一个会被调用,这是设计使然。