如何在开始执行另一个函数

时间:2017-07-06 15:01:11

标签: javascript jquery

在开始执行下一个函数之前,我已经使用.done()来确保函数完全执行。我从Ajax那里借用了这个想法。但它没有用。我一直收到错误消息done()不是一个函数。 done()仅适用于Ajax吗?如果是的话,我怎么能实现我的愿望。

document.onreadystatechange = function () {
  if (document.readyState === "complete") {
    //do somethings

  }
}

//This must be completely executed before addNu()
$( "#mybutton" ).click(function() {
  //Do some things

}).done(addNu());


function addNu() {
  //do some things
}

请注意,这些脚本都不是异步的。每个必须在运行下一个

之前完成

3 个答案:

答案 0 :(得分:0)

为什么你不在.click事件结束时调用该函数?

document.onreadystatechange = function () {
  if (document.readyState === "complete") {
    //do somethings

  }
}

//This must be completely executed before addNu()
$( "#mybutton" ).click(function() {
  //Do some things

   addNu()
});


function addNu() {
  //do some things
}

答案 1 :(得分:0)

不幸的是, [ForeignKey("UserId")] [MaxLength(12, ErrorMessage = "You Have Exceed The Max length Of User ID which is 12 Character!")] [RegularExpression("[0-9]{2}-[0-9]{5}-[123]{1}|[0-9]{2}-[0-9]{7}-[123]{1}", ErrorMessage = "Invalid Id,It should [xx]-[xxxxx]-[x] or [xx]-[xxxxxxx]-[x]")] [Display(Name = "User ID")] public string UserId { get; set; } 方法保留给从AJAX请求返回的promise。

您可以通过创建不需要AJAX的自己的JS Promise来实现相同的结果。

一个展示承诺如何运作的好网站https://scotch.io/tutorials/javascript-promises-for-dummies

答案 2 :(得分:0)

我已经完成了这里给出的解决方案和参考规定。没有用,因为这些脚本既不是ajax也不是async。 我这样解决了:

document.onreadystatechange = function () {   
  if (document.readyState === "complete") {
    //do somethings

  } 
}

//This must be completely executed before addNu() 
$( "#mybutton" ).click(function() {
  //Do some things

  //Check if completely done e.g.    
  length = $('img').length;    

  if (!length) {
     addNu();    
  } 
});    

function addNu() {
 //do some things 

}