请问我的java脚本存在问题。
start_clock_ws : function(){
var that = this;
..decl
function init(){
if(socket.isReady() === true){
socket.send({ "time": 1});
console.log("clock started");
}else{
console.log("The other guy");
console.log("The ready state is",socket.isReady());
return that.start_clock(); //Here is my issue
}
};
function responseMsg(response){
..decl
}
this.run = function(){
console.log("the parent fired");
setInterval(init, 60000);
};
console.log("Its here");
init();
this.run();
this.clock_started = true;
socket.init({
onmessage : function(msg){
var response = JSON.parse(msg.data);
console.log("It fires here first");
if (response && response.msg_type === 'time') {
responseMsg(response);
}
}
});
},
start_clock : function(){
}
我的问题是上面的其他问题。我检查了我的isReady()的值,它是假的。然后我回到了start_clock。但是,当我执行时,它返回start_clock
并继续并运行我的this.run
。上面的return
不应该强制它继续start_clock
离开代码的其余部分吗?在它没有返回之前,它只是一个函数调用。然后我添加了返回希望它可以工作。同时调试。我注意到我的socket.onmessage
函数被多次调用并且由于ws请求。然后我把它带到run
以下的极端。
请帮助或解释将不胜感激。这对我来说很新,而且很难理解这个问题。
答案 0 :(得分:0)
调用init函数时尝试此操作:
.validation-summary-errors ul li:nth-child(n+2) {
display:none;
}
如果函数返回int值,那是因为你要返回一个函数而代码必须停止。但如果没有返回值(未定义),代码将继续。
我希望有所帮助!
答案 1 :(得分:0)
试试这个:
// Check if clock_started and if not then run following code.
if(!init()){
this.run();
this.clock_started = true;
socket.init({
onmessage : function(msg){
var response = JSON.parse(msg.data);
console.log("It fires here first");
if (response && response.msg_type === 'time') {
responseMsg(response);
}
}
});
}
另外
function init(){
if(socket.isReady() === true){
socket.send({ "time": 1});
console.log("clock started");
return false;
}else{
console.log("The other guy");
console.log("The ready state is",socket.isReady());
return that.start_clock(); //Here is my issue
}
};
为了解释的目的,我创建了一个简单的Fiddle。
Return
用于将值返回给调用函数。您必须收到此值并相应地处理它。在你的代码中,你正在调用一个函数,但没有检查返回值,因此它会继续。
function welcome(name){
console.log("Hello " + name);
}
function permission(returnValue){
var str = returnValue?"You may proceed.":"You may not.";
console.log(str);
return returnValue
}
function proceed(){
console.log("Proceeding to next task.")
}
function run1(){
welcome('foo');
permission(false);
proceed();
}
function run2(){
welcome('foo');
if(permission(false))
proceed()
else
console.log("Permission denied.");
}
<button onclick="run1()">Not Checking return value</button>
<button onclick="run2()">Checking return value</button>