标签: callback

c ++测试缺少的回调函数

编辑:添加反引号到回调模板.界面正在读取星号作为降价指示器,而不仅仅是星号!

在我正在编写的Windows DLL/Linux中,我为用户应用程序提供了一种注册回调函数的方法.效果很好.回调原型看起来像(void)(*callback)(void*);

我在编写文档时感到很偏执并意识到,我没有很好的方法知道注册地址是否有效.唯一的反馈是崩溃或调用try/catch中的回调.

我不知道如果回调不存在以及谁知道执行了什么会抛出什么异常.甚至不确定对"无处"的调用可以恢复到足以产生异常而不是崩溃.

是的,我知道这是用户的问题.只是想要深思熟虑,也许可以帮助用户理解他的错误.

那么,这会抛出什么异常?Windows和Linux如果不同则请回答.

或者,有没有更好的方法来解决这个问题,而不必使用异常捕获来检测丢失的函数?

c++ exception callback

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

为什么这个简单的回调函数不起作用?

我第一次尝试使用回调函数,但是无法正常工作.这是我的代码的简化版本:

var unsavedChanges = 1;

function saveData(callback)
{
    // save data

    if(typeof callback === "function")
    {
        unsavedChanges = 0;
        callback.apply(arguments);
    }
}

function nextStep(val)
{
    if(unsavedChanges == 1)
    {
        saveData(nextStep, val);
        return false;
    }

    console.log(val);
}

nextStep("test");
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/tXqn3/

在我真正的"saveData"函数中,我正在使用保存数据,$.ajax()并且我在.done()函数中有回调.所以,这样一来,如果页面上有未保存的数据,则会保存,然后执行被调用的原始函数.

使用此代码,undefined代码运行时,值将打印到控制台.我究竟做错了什么?

javascript jquery callback

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

当在jquery中将数据返回到`.ajax`回调时,我是否必须使用`echo`?

我通过在线教程学习n00b.我在名为"response.php"的"服务器端"测试文件中有以下代码:

<?php
if (isset($_POST))
{
$answer = $_POST;
echo json_encode($answer);
}  else {
echo json_encode(array('status' => false, 'msg' => 'no good'));
}  
?>
Run Code Online (Sandbox Code Playgroud)

echo将数据返回到.ajaxjquery回调时,我是否总是必须使用?是否有其他方法将数据发送回客户端?

php ajax jquery callback echo

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

将JS回调函数传递给C#RT组件错误:"无法将类型为'mydb.SQLite3JSNoCallback'的对象强制转换为'mydb.SQLite3JSNoCallback'"

我有一个Javascript Windows 8应用程序.我正在使用C#编写WinRT组件DLL,以便与数据库连接.

对于所有函数,如OpenDB,ExecuteUpdate,ExecuteQuery(返回一行,返回一个列值),我已经完成了IASyncOperation并且非常成功.

但是为了逐个处理大结果集中的每一行,我需要将一个回调函数从javascript传递给C#WinRT组件DLL.所以代码就像,

My.WinRT.Component.Object.processEachRowASyc(query, arguments, function(row) {
    /* Row specific processing */
}).then(function(result) {
    /* Process after Entire Row processing is Complete */
});
Run Code Online (Sandbox Code Playgroud)

我写了这样的RT组件,

namespace mydb
{
    public void delegate MyJSCallback(string msg);
    public class Database {

        public static IAsyncOperation<Database> OpenDB(string dbFile)
        {
           /* Open DB */
        }

        public IAsyncOperation<Database> ProcessEachRowASync(string sql,[ReadOnlyArray()] object[] arg, MyJSCallback myJSCallback)
        {
            return Task<Database>.Run(() =>
            {
            /* Query Processing */
            IDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                string toRet = "{\"Name\":\"Raju\", \"Age\":\"21\"}";

                //Javascript …
Run Code Online (Sandbox Code Playgroud)

javascript c# callback windows-runtime

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

在类中执行私有函数的名称(字符串)

目前我有这样简单的JavaScript类:

function MyClass() {

// ... some code ...

this.Create = function() {
  funcName = 'myTestFunc()';
  cTimer = setTimeout(funcName, 1000);
  }

// ... more code ...

var myTestFunc = function() {
  alert ('everything\'s OK!');
  }

// ... more code ...
}
Run Code Online (Sandbox Code Playgroud)

并测试它我正在使用此代码:

x = new MyClass();
x.Create();
Run Code Online (Sandbox Code Playgroud)

我有一些麻烦来执行这个功能的名字.如果我把just eval(funcName);而不是setTimeout调用它工作正常但无法弄清楚为什么它不能这样工作.

当然,这是更复杂代码的一部分,但其余代码与此问题无关.

我的问题很明显 - 如何通过名称设置为setTimeout函数的参数来执行函数?可能吗?

注意:将此函数设为public(this.myTestFunc = ...)不是一个选项!

更新:

funcName = "myTestFunc()";只是一个例子.在实际代码中它看起来像funcName = getRandomEffectFunctionName();!这只是一个随机值.

javascript class function callback

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

如何从nodejs中的另一个文件回调函数?

我开始使用异步编程,我正在创建一个nodejs应用程序,我在一些文件中切片代码:index.js,ctlUser.js,DAO.js等... .. Index.js是它需要的主文件ctlUser和ctlUser需要DAO.js ... DAO连接数据库并执行查询...

抽象,我的结构是这样的......

Index.js

var ctlUser =  require('./ctlUser.js');
var username = ctlUser.getUserName('1');
console.log("Return from ctlUser" + username);
Run Code Online (Sandbox Code Playgroud)

ctlUser.js

var DAO = require('./DAO.js');
var getUserName = function(id){
    var userName = DAO.executeQuery("SELECT username FROM tbUsers WHERE id = " + id );
    console.log(Return from DAO = userName);
    return username;
}
Run Code Online (Sandbox Code Playgroud)

DAO.js在这里一切都很好......

var mysql      = require('mysql'); 
var executeQuery = function(query) {    
        var connection = mysql.createConnection({
            host        : SERVER,
            user        : USER,
            password    : PASSWORD,
            database    : DATABASE
        });
        connection.connect();
        connection.query(query, …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous callback node.js

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

指向SDL音频回调的成员函数的指针?

我使用SDL 1.2.15打从libav(ffmpeg的)声音就像这个例子在这里

我已经宣布要播放声音的课程。但是现在我必须在中存储该回调函数的指针SDL_AudioSpec::callback(在示例中wanted_spec.callback)。但是我的回调是我班的成员。

SDL中的回调指针是:

void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len);
Run Code Online (Sandbox Code Playgroud)

哪里SDLCALL__cdecl

如何在我的成员函数中存储一个指针wanted_spec_.callback

c++ pointers sdl callback member

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

回调没有运行第二个功能

我在问这个问题之前试图研究回调 - 但是我写的东西却没有用.我首先定义函数,然后告诉它们运行onload.getelements()可以自行运行.

我试图加载元素,然后计算它们,用于数学显示随机索引之一.

    function getelements() {
     jQuery('#testimonial').load('http://www.example.com .testimonial');

 }

 function countelements() {
     var elements = jQuery('div.testimonial').length;
     console.log(elements);
 }

 window.onload = function () {
     getelements(function () {

         countelements();
     });
 }
Run Code Online (Sandbox Code Playgroud)

javascript jquery callback

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

"事件"和成员函数指针的C++映射

我已经设法编写一个模板类来像回调一样工作,从这个问题的接受答案中学习如何定义一般成员函数指针.

我希望有一个字符串键和回调值的映射,以便我可以调用匹配字符串的正确回调.这没关系,但我需要地图来支持来自不同类的回调.现在它只能用于一个类.它可以是任何类,因为模板只是来自同一个类的回调集合.

class Apple {
public:
    void Red () {
        cout << "aa";
    }
};

class Orange {
public:
    void Blue () {
        cout << "bb";
    }
};

template <typename T>
class Callback {
    T *obj;
    void (T::*ptr) (void);

public:
    Callback (T *obj, void (T::*ptr) (void)) : obj (obj), ptr (ptr) {

    }

    void Call () {
        (obj->*ptr) ();
    }
};
Run Code Online (Sandbox Code Playgroud)

我可以这样使用它

Apple apple;
Orange orange;
Callback <Apple> callA (&apple, &Apple::Red);
Callback <Orange> callB (&orange, &Orange::Blue);
callA.call (); …
Run Code Online (Sandbox Code Playgroud)

c++ templates member-function-pointers function-pointers callback

0
推荐指数
2
解决办法
2458
查看次数

Python替代Javascript function.bind()吗?

用Javascript可能会写

var ids = ['item0', 'item1', 'item2', 'item3']; // variable length
function click_callback(number, event)
{
    console.log('this is: ', number);
}
for (var k = 0; k < ids.length; k += 1)
{
    document.getElementById(ids[k]).onclick = click_callback.bind(null, k);
}
Run Code Online (Sandbox Code Playgroud)

因此,即使在调用函数k时它已更改,我也可以将其注册时的值传递给回调函数。

Python有办法做一些等效的事情吗?


具体情况是这样(但我更喜欢一个一般性的答案):

我有可变数量的matplotlib图(每个坐标一个)。每个都有一个SpanSelector,出于某种原因,它被设计为仅将两个极限点传递给回调函数。但是,它们都具有相同的回调函数。所以我有:

def span_selected(min, max):
Run Code Online (Sandbox Code Playgroud)

但是我需要

def span_selected(which_coordinate, min, max):
Run Code Online (Sandbox Code Playgroud)

在注册回调时,我当然知道坐标,但是在调用函数时我需要知道它。在Javascript中,我会做类似的事情

callback = span_selected.bind(null, coordinate)
Run Code Online (Sandbox Code Playgroud)

我将在Python中做什么?

javascript python bind callback

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