标签: callback

jQuery回调函数累积

我为自定义确认框编写了一些代码,该框在按下确认按钮(是按钮)时调用函数并将另一个函数作为参数传递,并将其绑定到具有不同功能的 2 个不同按钮点击作为参数。例如:

$('#button1').click(function() {
    callFunction(function() { alert("test"); });
});
$('#button2').click(function() {
    callFunction(function() { alert("test2"); });
});

function callFunction(callback) {
    //code to display custom confirm box

    console.log(callback);

    $('.confirm-box .yes-button').click(function() {
        callback();
    });
}
Run Code Online (Sandbox Code Playgroud)

一切都按预期发生,确认框出现,点击确认按钮时,我执行了一个回调函数,它会提醒“测试”(或“test2”,具体取决于哪个按钮称为确认框)。当我单击发送提醒“test”的函数的 button1 时,问题出现了,然后不是确认我取消它(没有按预期发生),然后单击将 alert("test2") 作为回调函数传递的 button2。现在,一旦我按下 yes 按钮而不是只提示“test2”,我就会同时收到“test2”和“test”提示,即使我写的 console.log 只记录了在那个 button2 时提示“test2”的函数点击。似乎这些回调函数堆积在某个地方,但我不明白在哪里以及为什么。

javascript jquery function callback jquery-callback

1
推荐指数
1
解决办法
959
查看次数

在闭包内调用父函数

我真的很难尝试在异步soap请求中调用对象函数。它基本上归结为:

function Thing(request, response) {

    this.foo = function() {
        console.log("this is foo");
    }

    this.doThing = function() {
        // Get SOAP args
        args = { foo: this.request.cookies.foo };
        // From the SOAP npm package library
        soap.createClient(function(err, client) {
            client.doSomething(args, function(err, result) {
                // Somehow call foo(); <--- CAN'T FIND A WAY TO DO THIS
            });
        });
    }
}
// Make it so I can access this.request and this.response somehow
Thing.prototype = Object.create(AbstractThing); 
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西,但我相信它从根本上归结为我无法调用this.foo()任何异步肥皂函数的事实。虽然我可以将回调函数传递给createClient,如下所示:

function Thing(request, response) { …
Run Code Online (Sandbox Code Playgroud)

javascript soap asynchronous callback node.js

1
推荐指数
1
解决办法
1625
查看次数

理解 JavaScript 中的术语 iteratee、回调、函数工厂

我正在努力熟悉 JavaScript 术语。我想我对iterateecallbackfunction factory术语感到困惑

让我用下面这个愚蠢的例子:

//this function accept an array and then  returns a new array that
//contains the elements of the first array altered by func
function mapForEach(arr, func) {
   var newArr = [];
   for (var i = 0; i < arr.length; i++) {
    newArr.push(func(arr[i]));
  }
 return newArr;
}

//this function multiplies two numbers
var multiply = function (a, b) {
 console.log(a * b);
};

//this is a silly function that passes a …
Run Code Online (Sandbox Code Playgroud)

javascript factory terminology callback iterate

1
推荐指数
1
解决办法
2657
查看次数

分派动作后的 Redux Thunk 回调?

所以在我的 React 组件中,我有这个:

this.props.updateAlertCallback('error', ERROR_MESSAGE)
Run Code Online (Sandbox Code Playgroud)

我的updateAlertCallback做法是:

export const updateAlert = (alert, message) => {
  return {
    type: 'UPDATE_ALERT',
    alert,
    message
  }
}

export const updateAlertCallback = (alert, message) => {
  return dispatch => {
    return dispatch(updateAlert(alert, message)).then(() => {
      console.log('Done!');
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:Uncaught TypeError: dispatch(...).then is not a function

updateAlert运行完成后记录某些内容的正确方法是什么?

callback reactjs redux redux-thunk

1
推荐指数
1
解决办法
1万
查看次数

如何从同步回调返回?

首先,看看这个样本:

var calculate = function(callback) {
  // calculating...
  callback(5);
}

var parent = function() {
  var x = 0;

  var calculatedValue = calculate(function(output) {
    return output; // return #1

    x = output;
  });

  return x; // return #2

  return calculatedValue; // return #3
}
Run Code Online (Sandbox Code Playgroud)

我的目标是在calculate函数内“计算”一个值,并且该值必须由parent函数返回。

为了实现这一点,我应该在哪里放置 return 语句,我应该用它返回什么?

我尝试了 3 种情况:

return #1 这里的output值是由callback函数返回的,而不是parent函数,所以 parent 返回 undefined。

return #2 这里x的值是在执行callback函数之前返回的,所以parent返回0。

return #3+return #1 在这里,我试图返回output从 …

javascript callback

1
推荐指数
1
解决办法
834
查看次数

Google Analytics 会在设置时发出事件吗?

我们的一些客户希望向他们报告他们的 Google Analytics ID。得到它并不难。

ga.getAll()[0].get('clientId');

还有一个排队语法,以便在设置 GA 时完成操作。

但是不想在 GA 准备好时发送 GA 事件。准备好后我想问 GA 一个问题。

也许有某种方式可以对 GA 说“当你准备好了,运行这个函数,我传递给你。”

或者,GA 是否在准备好时发出自定义事件?

目前,当窗口发出加载事件时,我的客户正在调用我的代码。但即便如此,仍有一小部分时间 ga 未定义。如果您等待几秒钟,则它已定义。也许一些奇怪的cdn系统。无论如何,我需要一种可靠的方法来确定 GA 何时准备就绪。


(我无法使评论中的格式配合,所以我改变了我的问题来回应 Feathercrown。)

听起来不错!唯一的问题是 ga 尚未定义。这是我自己发送的错误消息示例。
"type": "Page View", "data": { "error": { "message": "ga.getAll is not a function. (In 'ga.getAll()', 'ga.getAll' is undefined)", "message2": "window.GoogleAnalyticsObject = ga", "message3": "typeof ga is not Object" } },

也许 _gxx 符号已经可用?

javascript google-analytics callback shopify

1
推荐指数
1
解决办法
930
查看次数

循环中的 Node JS Api 请求

我正在尽我最大的努力避免我的 Node JS 回调地狱。但是我正在尝试发出大量 api 请求并将它们插入到我的数据库中。

我的问题(当然)是我的 for 循环在完成请求和数据库插入之前运行并增加 i 。

for(var i = 0; i <= 1 ; i++){
    apiRequest = data[i]; 
    apicall(apiRequest);
}


function apicall(urlApi){
    request((urlApi), function(error, response, body){
        if(error){
            console.log("error");
        } else if(!error && response.statusCode == 200){
            var myobj = JSON.parse(body);
            dbInsert(myobj);
        }
    });
}

function dbInsert(obj) {
    //insert into database
}
Run Code Online (Sandbox Code Playgroud)

如果其他人会问这个问题,我可以真正推荐这篇博文,这是我在阅读joshvermaire的回复后发现的:

http://www.sebastianseilund.com/nodejs-async-in-practice

loops callback request node.js

1
推荐指数
1
解决办法
1万
查看次数

Rails 5 - 当关系是可选的时,对belongs_to 存在的条件before_save 回调

我有 2 个模型:

Card belongs_to :template, optional: true
Template has_many :cards
Run Code Online (Sandbox Code Playgroud)

我想向 Card 添加回调:

before_save :set_status, if: self.template.exists?
Run Code Online (Sandbox Code Playgroud)

但这会引发错误,即 Card 类没有方法“模板”?

我也试过:

 before_save :set_status, if: self.attributes.has_key? "template_id"
Run Code Online (Sandbox Code Playgroud)

和:

before_save :set_status, if: self.template.nil?
Run Code Online (Sandbox Code Playgroud)

(这也NoMethodError (undefined method为#`提供了模板'))

和:

before_save :set_status, if: self.template.present?
Run Code Online (Sandbox Code Playgroud)

那么如何检查 Card 是否有模板呢?

编辑

这有效,但为什么这项工作有效而上述无效?似乎 self.template 必须在方法调用中。

before_save :set_status, if: :template_exists?

def template_exists?
  return !self.template.nil?
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails callback

1
推荐指数
1
解决办法
1583
查看次数

向 nodejs 中的承诺数组添加延迟或睡眠

我有一个一直在努力解决的承诺链问题。我调用一个外部 api,它返回我需要处理的数据并将其摄取到 mongo 数据库中。我正在将 nodejs 和 mongodb 与 express 一起使用。无论如何,对 api 的调用工作正常,问题是我正在同时制作大量的调用。我想放慢他们的速度,就像为一组打所有电话一样。等一下。为下一组发出所有呼叫。如果这是已知数量的集合,我会承诺将它们链接起来。我不知道有多少套,所以我在循环它们。我认为关闭是问题,但无法解决它。到示例代码!

  function readApi(carFactory){
    var promise = new Promise(function(resolve, reject) {
      // call out to api, get set of car data from factory1

      console.log(carFactory);
      if (true) {
        console.log('resolved');
        resolve("Stuff worked!"+carFactory);
      }
      else {
        reject(Error("It broke"));
      }
    });
    return promise;
  }

  function manager(){

    //singular call
    readApi("this is a singular test").then(returnedThing=>{
      console.log(returnedThing); //Stuff worked! this is a singular test
    });

    let dynamicList = ["carFactory1", "carFactory2","carFactory3","carFactory..N"];
    let readApiAction = [];
    dynamicList.forEach(carIter=>{
      readApiAction.push(readApi(carIter));
    }); …
Run Code Online (Sandbox Code Playgroud)

javascript callback node.js promise async-await

1
推荐指数
1
解决办法
6585
查看次数

当请求处理程序失败时,NServiceBus 6 回调客户端永远不会收到回调

使用 NServiceBus 6 的回调功能,我发现无法提醒客户端请求处理程序失败。请求处理程序将经历所有可恢复性步骤,并最终将消息放入错误队列。同时,客户端只是坐在那里等待它的回复。

// Client code (e.g. in an MVC Controller)
var message = new FooRequest();
var response = await endpoint.Request<FooReponse>(message);

// Handler code
public class FooRequestHandler : IHandleMessages<FooRequest>
{
    Task Handle(FooRequest message, IMessageHandlerContext context)
    {
        throw new Exception("Fails before the reply");
        return context.Reply(new FooResponse());
    }
}
Run Code Online (Sandbox Code Playgroud)

在上述情况下,如何让 MVC 控制器/调用代码知道处理程序已永久失败?

error-handling callback nservicebus nservicebus6 request-response

1
推荐指数
1
解决办法
240
查看次数