Javascript 如何在Java脚本函数中使用回调函数

Javascript 如何在Java脚本函数中使用回调函数,javascript,callback,Javascript,Callback,我对Java脚本非常陌生,需要在Java脚本函数中使用回调函数。我不知道如何使用回调函数。下面是我的代码: function SelectedFeature() { // Here is my code call_Method1(); call_Method2(); } 上述函数中的问题是,call_method2()在call_Method1()结束执行之前开始执行。为了解决这个问题,有人告诉我使用回调函数。现在,如何在SelectedFeature()函数中使用回调函数。请使用代码

我对Java脚本非常陌生,需要在Java脚本函数中使用回调函数。我不知道如何使用回调函数。下面是我的代码:

function SelectedFeature() {

// Here is my code

call_Method1();

call_Method2();

}

上述函数中的问题是,call_method2()在call_Method1()结束执行之前开始执行。为了解决这个问题,有人告诉我使用回调函数。现在,如何在SelectedFeature()函数中使用回调函数。请使用代码示例进行解释

下面是一个简单的例子:

function processData(data) {
    firstStep(data, secondStep);
}    

function firstStep(data, callback) {
    var result = getResult(data);
    if (result.success) {
        callback(result);
    }
}

function secondStep(data) {
    // ...
}

下面是一个简单的例子:

function processData(data) {
    firstStep(data, secondStep);
}    

function firstStep(data, callback) {
    var result = getResult(data);
    if (result.success) {
        callback(result);
    }
}

function secondStep(data) {
    // ...
}

如果您正在进行ajax调用,要停止call_method2的执行,在ajax请求中,我们可以执行以下操作:

$.ajax({
  url: "your url",
  type: "Get",
  success: call_Method2,
  failure: call_Method2
});

现在,call_Method2将仅在call_Method1完成时运行。

如果您正在进行ajax调用,要停止call_Method2的执行,在ajax请求中,我们可以执行以下操作:

$.ajax({
  url: "your url",
  type: "Get",
  success: call_Method2,
  failure: call_Method2
});
现在,call_Method2将仅在call_Method1完成时运行。

以下是解决方案

 function SelectedFeature() {

    this.call_Method1 = function(data, callback) {
        var success = false; // define success flag with default false

        //your code
        //here write your logic and assign true of false to success based on your code execution
        success = true;

        if (success) {
            //pass data or add one more parametere to call_Method1 if different data
            //this.call_Method1 = function(data,data1,callback){
            //callbackdata1);
            callback(data);
        }
    }

    this.call_Method2 = function(data) {
        console.log(data);
    }

}

var feature = new SelectedFeature();
var data = "some data"
feature.call_Method1(data, feature.call_Method2);
这是解决办法

 function SelectedFeature() {

    this.call_Method1 = function(data, callback) {
        var success = false; // define success flag with default false

        //your code
        //here write your logic and assign true of false to success based on your code execution
        success = true;

        if (success) {
            //pass data or add one more parametere to call_Method1 if different data
            //this.call_Method1 = function(data,data1,callback){
            //callbackdata1);
            callback(data);
        }
    }

    this.call_Method2 = function(data) {
        console.log(data);
    }

}

var feature = new SelectedFeature();
var data = "some data"
feature.call_Method1(data, feature.call_Method2);
您可以遵循这个回调结构

您可以遵循这个回调结构


您确定在调用方法1()之前执行调用方法2()?在方法1和方法2中会发生什么?你在使用setTimeout吗?call_Method2()不能在call_Method1()之前运行,只有在call_Method1()中发出任何异步请求时才可能。请告诉我你在call_Method1()中做什么?嗯,是的,你在使用某种异步调用,如setTimeout、setInterval或ajax吗?你确定要调用_Method2()吗在调用_Method1()之前执行?Method1和Method2中会发生什么?你在使用setTimeout吗?call_Method2()不能在call_Method1()之前运行,只有在call_Method1()中发出任何异步请求时才可能运行。请告诉我你在call_Method1()中做了什么?嗯,是的,你在使用某种异步调用,比如setTimeout、setInterval或ajax吗?亲爱的Praveen Parsad,你完全正确。我正在method1()中发出异步请求。我需要在完成method1()执行后调用Method2()。但在我的例子中,method2()在method1()完成执行之前调用。亲爱的Praveen Parsad,你说得对极了。我正在method1()中发出异步请求。我需要在完成method1()执行后调用Method2()。但在我的例子中,method2()在method1()完成执行之前调用。现在如何才能ifix这个?