Javascript 如何记住函数中的值?



我有这个功能:

//We will store any failed subscriptions and retry them until the succeed (if ever)
addFailedSubscription: function(streamId) {
failedSubscriptions[streamId] = true;
$timeout(function() {
failedSubscriptions[streamId] = null;
}, 5000);
}

这安全吗?在函数返回后,streamId 如何可用于超时函数?它是否有效地为此函数创建了闭包?

谢谢

可以使用JS闭包来完成。 工作演示如下:

var $timeout = setTimeout;
var failedSubscriptions = {}
var x = {
addFailedSubscription: function(streamId) {
console.log('streamId ', streamId)
failedSubscriptions[streamId] = true;
(function(id) {
$timeout(function(streamId) {
console.log('streamId ',id);
failedSubscriptions[streamId] = null;
}, 5000)
})(streamId)
}
}
x.addFailedSubscription(10)

这似乎是安全的。streamId变量位于addFailedSubscription函数的范围内。即使在函数返回后,您的$timeout功能也与streamId具有相同的作用域。 $timeout函数看起来像闭包,因为它在局部环境中使用非局部变量。

相关内容

  • 没有找到相关文章

最新更新