我必须在设置的超时时间内使用回调函数来调用函数,因为我已经编写了这样的代码
getData(a, b, function(err, rlt) {
if (err) {
console.log(err)
} else {
// call next function after 35 seconds
settimeout(getData(c, d, function(err, rlt) {
if (err) {
console.log(err)
} else {
// call next function after 10 seconds
settimeout(getData(x, y, function(err, rlt) {
if (err) {
console.log(err)
} else {
console.log(rlt);
}
}), 10000);
}
}), 35000)
}
});
function getData(parms1, parms2;, callback) {
return callback(null, parms1 + parms2);
}
我已经编写了与此类似的代码,但是我的问题是set timeout不能立即执行其执行功能,而不会等待35秒和10秒。
我不知道我在做什么错,如果您知道更好的方法,请帮助我。
答案 0 :(得分:1)
您必须将对getData的调用包装在一个匿名函数中,例如setTimeout(function(){ getData(x, y, …) }, 1000)
。
答案 1 :(得分:1)
下面是setTimeout
的正确语法。您的method
应该始终作为setTimeout
函数的第一个参数
setTimeout(function(){myMethod(parameter);},3000);
完整参考:http://www.java2s.com/Tutorials/Javascript/Node.js_Tutorial/0270__Node.js_setTimeout_setInterval.htm
答案 2 :(得分:1)
我认为您错过了settimeout( setTimeout )的拼写尝试:
class ContViewController: UIViewController, DelegateProtocol {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "con" {
let vc = segue.destination as! ViewController
vc.delegate = self
}
}
func addText(String2: String) {
label.text = String2
}
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}