标签: callback

使用setTimeout()进行Javascript回调地狱

阿罗哈.这是我潜伏之后的第一个问题.我为这个问题的详细但直接的形式道歉 - 以及对可接受的答案的限制 - 但我在这里做出贡献.我有一个问题,其他问题(例如如何避免在Node.js中的异步函数的长嵌套Javascript中的链式回调可读性?)不满意我的回答.

我想执行几个Javascript回调,以便我有一个接一个发生的四个动作的序列.这是来源:

var self = this;
fade(div, fadeIn, -20, function() {
  load(unload, dataOut, -10, function() {
    load(self, dataIn, 10, function() {
      fade(div, fadeOut, 20),0);
      unload = self;}
    );}
  );}
);
Run Code Online (Sandbox Code Playgroud)

除了内部语义细节之外,load()和fade()函数非常相似,它们看起来与此类似:

function load(menuCategory, data, step, callback) {
  menuCategory.parentNode.style.width = data+"px";
  data += step;
  if(dataIn <= data && data <= dataOut) {
    setTimeout(function() { load(menuCategory,data,step,callback) }, 15);
  } else if(callback && (typeof(callback) == 'function')) { 
    callback();}
}
Run Code Online (Sandbox Code Playgroud)

我有几个问题与这个混乱有关,但首先让我给你我不寻找的答案.使用jQuery的答案是不可接受的.使用其他计时或"同步"框架或模块的答案是不可接受的.质疑阻止执行的原因的答案是不可接受的.使用Javascript以外的语言的答案是不可接受的.非抽象答案是可以接受的,但最终的解决方案需要尽可能抽象,这意味着答案必须能够对各种相似但略有不同的行为采取行动.

这是我的主要问题:是否有一个函数/对象可以用来顺序应用这些操作,以减少这里的回调?换句话说,如果对象/函数能够同步执行每个动作,因为它是通过它单独迭代(即传递给它),对象会是什么样子?

次要问题:是否有人知道这个回调业务在其他语言中看起来像goto()多少?意思是,这种回调嵌套对我来说感觉非常尴尬和不优雅.是否有开发或已经开发的Javascript语言结构可以减少这种疯狂的业务?回调嵌套是一个最难遵循的逻辑流程.这感觉很尴尬.

我的目标是一个紧凑,优雅,有吸引力的本土Javascript对象/函数 - 我可以在for()循环或等效函数中调用 …

javascript callback settimeout

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

在获取attr href时如何在jquery中进行回调?

我有这个代码:

$("#downloadPopup").attr("href")
Run Code Online (Sandbox Code Playgroud)

这给了我一个链接,但我希望有一个回调来收集链接,例如:

  $("#downloadPopup").attr("href", function(){
        console.log($(this)); 
       // i need make sure the link value is available (promise).
    });
Run Code Online (Sandbox Code Playgroud)

我试过这个但是它不起作用,我不确定我是否必须将参数传递给回调.谢谢

javascript jquery callback

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

等待节点js中函数或回调的返回值

我是节点js的新手,我正试图在这个节点js中设置一些变量

var perm1 = 0;
var perm2 = 0;
check_tasksAssigned(data,function(resp1) {
    perm1 = resp1;
});
check_projectMembers(data,function(resp2) {
    perm2 = resp2;
});

if(perm1 && perm2) {
    // do some db stuff here
}
Run Code Online (Sandbox Code Playgroud)

但我得到的不确定.我也试过这样的,

var perm1 = check_tasksAssigned(data,function(resp1) {

});
var perm2 = check_projectMembers(data,function(resp1) {

});

if(perm1 && perm2) {
    // do some db stuff here
}
Run Code Online (Sandbox Code Playgroud)

并尝试过这样,但结果在所有情况下都是一样的.

var perm1 = check_tasksAssigned(data);
var perm2 = check_projectMembers(data);

if(perm1 && perm2) {
    // do some db stuff here
}
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

提前致谢

javascript callback node.js

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

Laravel 中的未知状态 419 payfast 通知 url

我正在尝试将 PayFast 支付网关集成到我的 laravel 应用程序中,但收到 419 错误,我认为这很奇怪,下面是代码。

我已经按照 PayFast 文档中的方式配置了所有内容,并且在 ngrok 和通知 url 上检查它,我收到 419 未知状态,我不知道我缺少什么。请查看我的代码并让我知道我缺少什么。

PayFast 表单视图

<form target="_blank" action="https://sandbox.payfast.co.za/eng/process" method="POST">
    <input type="hidden" name="merchant_id" value="10015150">
    <input type="hidden" name="merchant_key" value="aaid6ctdo8lxz">
    <input type="hidden" name="custom_str1" value="{{$business->id}}">
    <input type="hidden" name="amount" value="200.00">
    <input type="hidden" name="name_first" value="">
    <input type="hidden" name="name_last" value="">
    <input type="hidden" name="email_address" value="">
    <input type="hidden" name="cell_number" value="0823456789">
    <input type="hidden" name="item_name" value="Making your business Featured on our Website">
    <input type="hidden" name="return_url" value="http://95d16c17.ngrok.io/return">
    <input type="hidden" name="cancel_url" value="http://95d16c17.ngrok.io/cancel">
    <input type="hidden" name="notify_url" value="http://95d16c17.ngrok.io/notify">
    <button type="submit" title="You will …
Run Code Online (Sandbox Code Playgroud)

php callback payment-gateway notify laravel

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

JavaScript函数执行得太快了

在下面的例子中,myFonk立即调用; 它不会等待click事件.为什么不?

    function myFonk(info) {
        $("#result").html(info);
    }

    function getText(text) {
        return function () {
            myFonk(text);
        }
    }

    $(document).ready(function () {
        $("#b1").click(getText("getText"));
        $("#b2").click(myFonk("myFonk"));
    });
Run Code Online (Sandbox Code Playgroud)

jquery callback

-2
推荐指数
1
解决办法
1475
查看次数

回调和听众; 的MouseListener

我正在尝试用听众编写一个项目,我的按钮在他们改变颜色的地方工作,现在我需要我的mouseLIsteners打印鼠标正在做的文本.例如:"鼠标已进入黄色区域,鼠标已退出黄色区域,鼠标已点击/释放黄色区域等" 我实现了它们,但没有任何工作要打印文本.这是我的代码:

          import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JPanel;

import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;

import javax.swing.JComponent;

public class SwingLab
{

 // frame properties
 private static final int FRAME_WIDTH = 400; private static final int FRAME_HEIGHT = 400;

 public static void main(String[] args)
 {
 // Instantiate a frame (the main window)
 JFrame frame = new JFrame();

 // The buttons (one for each color)
 final JButton bRed = …
Run Code Online (Sandbox Code Playgroud)

java swing listeners awt callback

-2
推荐指数
1
解决办法
771
查看次数

编写一个 JavaScript 函数 count(arr,callback)。它应该返回回调(箭头函数)为 true 的元素数量

例如:

count([2, 1, 4, 5, 2, 8], (e) => e === 2)  // Expected: 2
count([1, 2, 3, 4], (e) => e > 1)          // Expected: 3
Run Code Online (Sandbox Code Playgroud)

还需要使用forEach

我拥有的:

function count(arr, callback) {
  let values = 0
  arr.forEach(cb ? values++ : values + 0)
  return values
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。有什么建议吗?

javascript callback arrow-functions

-2
推荐指数
1
解决办法
783
查看次数

为什么AJAX完成和错误回调都触发?

这是一个带有匿名回调的简单的AJAX请求.双方completeerror已触发.为什么?

$.ajax({
  url:'/echo/js/?js=hello%20world!',
  complete: function (response) {
    console.log("In anonymous success callback");
    console.log("response text: " + response.responseText);
    console.log("response object:");
    console.log(response);
  },
  error: function (error) {
    console.log("In anonymous error callback");
    console.log("error object:");
    console.log(error);
  }
});
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/abalter/tz0tu04y/

编辑 我尝试使用promises,现在我只是得到错误.我的"简单的"ajax肯定有问题.

$.ajax({
    url: '/echo/js/?js=hello%20world!',
    type: 'POST',
  })
  .done(function(response) {
    console.log("In anonymous JS success callback");
    console.log("response text: " + response.responseText);
    console.log("response object:");
    console.log(response);
  })
  .fail(function(error) {
    console.log("In anonymous JS error callback");
    console.log("error object:");
    console.log(error);
  })
  .always(function(data) {
    console.log("JS I will always do …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery callback anonymous-function

-3
推荐指数
1
解决办法
755
查看次数

如何将Waterfall方法转换为promise

下面是使用async-waterfall方法的代码段.我怎么能用诺言转换这个.

async.waterfall([
    function(callback){
     User.update({username: user.username}, {$set: update_list}, function(err, a_user) {
      if (err) {
        err = new Error();
        err.code = 400;
        err.message = "Unexpected error occurred."
        callback(err)
      }
      if (!a_user) {
        err = new Error();
        err.code = 400;
        err.message = "User not found."
        callback(err)
      }else{
        callback(null, "updated", user_image);
      }
    })
   }, function(message, user_image, callback){
    if(user_image == undefined){
      callback(null, "done")
    }else{
      Bean.update({username: user.username, status:"Active"}, {$set: {user_image:user_image}},{multi:true},function(err, beanUpdated){
        if(err){
          err = new Error();
          err.code = 400;
          err.message = "Unexpected error occurred."
          callback(err)
        }else{ …
Run Code Online (Sandbox Code Playgroud)

javascript waterfall callback node.js promise

-3
推荐指数
1
解决办法
1119
查看次数

承诺mysql返回undefined,如何让函数等待结果

我正在尝试编写一个模块,该模块根据传递给函数的密钥从MySQL数据库返回一个值.

以下代码在独立测试时工作正常,我能够得到结果,但是当我尝试从函数调用得到结果时,我得到了未定义.

var value = getKey("tc_api_user_key");
Run Code Online (Sandbox Code Playgroud)

我怀疑它是由于返回声明.我应该如何让调用函数等待结果.

var mysql = require('promise-mysql')
    , dbConnect = require('../connection.js')
    , fs = require('fs')
    , select = fs.readFileSync(__dirname + '/queries/getallkey.sql').toString();

let getKey = (key_id) => {
mysql.createConnection(dbConnect.getConnection()).then(function(conn){
    var result = conn.query(select);
    conn.end();
    return result;
}).then(function(rows){
    // Logs out a list of hobbits
         Object.keys(rows).forEach(function(key) {
                    var item = rows[key];
                      if (key_id == item.key_id) {
                           return item.key_value;
                      }
                    });
});

}    

 var value = getKey("tc_api_user_key");
 console.log(value) 
Run Code Online (Sandbox Code Playgroud)

这个问题不是conn.query(),如果使用console.out结果,函数按预期工作,它只是在函数调用中不可用.可能是由于呼叫的异步性质.

javascript mysql callback node.js promise

-4
推荐指数
1
解决办法
869
查看次数

PHP回调有什么用?

我想知道什么时候应该使用PHP回调函数,使用PHP回调函数代替传统函数有什么好处?

例如

以小写形式获取名称的传统方法

<?php
function string($string){
    $results = array(
        'upper' => strtoupper($string),
        'lower' => strtolower($string),
    );
    return $result;
}
$name = string('Ahmar');
echo $name; //Output: ahmar
?>
Run Code Online (Sandbox Code Playgroud)

使用回调获得相同的输出

<?php
function string($string, $callback){
    $results = array(
        'upper' => strtoupper($string),
        'lower' => strtolower($string)
    );
    if(is_callable($callback)){
        call_user_func($calllback, $result);
    }
}
string('Ahmar', function($name){
    echo $name['lower']; //Output: ahmar
});

?>
Run Code Online (Sandbox Code Playgroud)

请解释一下使用闭包回调有什么好处,我们应该什么时候使用它?谢谢

php callback

-6
推荐指数
1
解决办法
307
查看次数