如何在设置超时节点js中回调函数

时间:2018-07-19 03:28:30

标签: javascript node.js settimeout

我必须在设置的超时时间内使用回调函数来调用函数,因为我已经编写了这样的代码

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秒。

我不知道我在做什么错,如果您知道更好的方法,请帮助我。

3 个答案:

答案 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()

    }

}