我编码了这个:
us.isConnected().then(function (msg) { er.msg = msg }, function (msg) { er.msg = msg });
$interval(function () {
us.isConnected().then(function (msg) { er.msg = msg }, function (msg) { er.msg = msg });
}, 20 * 1000);
我想用这样的函数简化它:
function connectMessage(msg) {
er.msg = msg;
}
us.isConnected().then(connectMessage(msg), connectMessage(msg));
$interval(function () {
us.isConnected().then(connectMessage(msg), connectMessage(msg));
}, 20 * 1000);
然而,这给了我一个错误:
错误2提供的参数与调用目标的任何签名都不匹配: 无法应用类型'(promiseValue:any)=> ng.IHttpPromise< {}>'参数1是类型' void'。
有人可以就此提出建议吗?
答案 0 :(得分:4)
你可以做的是
function connectMessage(msg) {
er.msg = msg;
}
var connect = function () {
us.isConnected().then(connectMessage, connectMessage);
}
connect();
var interval = $interval(connect, 20 * 1000);
$scope.on('$destroy', function() {
$interval.cancel(interval);
});
要注意三点
创建函数以避免重复connectMessage
创建函数以避免重复us.isConnected()
取消$ destroy的间隔,非常重要的部分
答案 1 :(得分:1)
错误2提供的参数与呼叫目标的任何签名都不匹配:无法应用类型'(promiseValue:any)=> ng.IHttpPromise< {}>'参数1是类型' void'。
then
的第一个参数需要是函数所以connectMessage
而不是你调用函数即connectMessage(er.msg)
< / p>
我想简化它
us.isConnected().then(connectMessage(er.msg), function () { er.msg = "Cannot connect" });
如何比us.isConnected().then(null, function () { er.msg = "Cannot connect" });
更简单但这是一个单独的讨论:)
不要自己调用此函数,即connectMessage
而不是connectMessage(msg)
:
function connectMessage(msg) {
er.msg = msg;
}
us.isConnected().then(connectMessage, connectMessage);
$interval(function () {
us.isConnected().then(connectMessage, connectMessage);
}, 20 * 1000);