Создание многоразовой функции для удаления / подтверждения с помощью обратных вызовов - PullRequest
1 голос
/ 05 ноября 2019

Я не уверен, задавался ли этот вопрос раньше, я проверял, но я не уверен, как на самом деле его искать.

Я хочу создать повторно используемую функцию для удаления, подтверждаяна основании решения пользователя. Я создал эту простую функцию для редактирования данных элемента со значениями объекта, но я не могу запустить обратный вызов, который был установлен в первой функции.

Или, возможно, даже возможно как-то вернуть bool из этой функции на основепо решению пользователя?

Вот логический пример того, чего я хочу достичь

function run(options, cb){
   if(options['success']){
      cb();
   }
}

var options = {success: true};
var cbarray = new Array('id', 'token');

//calling the function and setting the callback
run(options, function(cbarray){
    $.ajax({
       url: 'blabla',
       type: 'post',
       data: {id: cbarray[0], token: cbarray[1]},
       success: function(resp){
          console.log(resp);
       }, error: function(resp){
          console.log(resp);
       }
    });
});

Это довольно сложно объяснить, поэтому я создал этот jsfiddle со своим собственным кодом https://jsfiddle.net/43zrqkvm/7/

Может быть, я должен использовать обещания для этого? У меня еще не было времени, чтобы выучить обещания, но, может быть, я должен?

1 Ответ

1 голос
/ 05 ноября 2019

когда вы определяете функцию обратного вызова, вы запрашиваете аргумент, который будет использоваться в теле функции (в вашем случае в опциях ajax), но в функции Run вы не передаете ее

она должна выглядеть следующим образом

function run(options,arg, cb){
       if(options['success']){
          cb(arg);
       }
    }

    var options = {success: true};
    var cbarray = new Array('id', 'token');

    //calling the function and setting the callback
    run(options,cbarray, function(arg){
        $.ajax({
           url: 'blabla',
           type: 'post',
           data: {id: arg[0], token: arg[1]},
           success: function(resp){
              console.log(resp);
           }, error: function(resp){
              console.log(resp);
           }
        });
    });
...