标签: callback

如何在回调中访问正确的`this`?

我有一个构造函数,它注册一个事件处理程序:

function MyConstructor(data, transport) {
    this.data = data;
    transport.on('data', function () {
        alert(this.data);
    });
}

// Mock transport object
var transport = {
    on: function(event, callback) {
        setTimeout(callback, 1000);
    }
};

// called as
var obj = new MyConstructor('foo', transport);
Run Code Online (Sandbox Code Playgroud)

但是,我无法data在回调中访问已创建对象的属性.它看起来this并不是指创建的对象,而是指另一个对象.

我还尝试使用对象方法而不是匿名函数:

function MyConstructor(data, transport) {
    this.data = data;
    transport.on('data', this.alert);
}

MyConstructor.prototype.alert = function() {
    alert(this.name);
};
Run Code Online (Sandbox Code Playgroud)

但它表现出同样的问题.

如何访问正确的对象?

javascript callback this

1309
推荐指数
12
解决办法
36万
查看次数

如何将参数传递给setTimeout()回调?

我有一些JavaScript代码,如下所示:

function statechangedPostQuestion()
{
  //alert("statechangedPostQuestion");
  if (xmlhttp.readyState==4)
  {
    var topicId = xmlhttp.responseText;
    setTimeout("postinsql(topicId)",4000);
  }
}

function postinsql(topicId)
{
  //alert(topicId);
}
Run Code Online (Sandbox Code Playgroud)

我得到一个topicId未定义的错误在使用该setTimeout()函数之前,一切正常.

我希望postinsql(topicId)在一段时间后调用我的函数.我该怎么办?

javascript parameters callback settimeout

796
推荐指数
12
解决办法
54万
查看次数

如何在Objective-C中创建委托?

我知道代表们的工作方式,我知道如何使用它们.

但是我该如何创建呢?

cocoa delegates objective-c callback ios

735
推荐指数
14
解决办法
35万
查看次数

如何将现有的回调API转换为承诺?

我想使用promises,但我有一个回调API,格式如下:

1. DOM加载或其他一次性事件:

window.onload; // set to callback
...
window.onload = function() {

};
Run Code Online (Sandbox Code Playgroud)

2.平原回调:

function request(onChangeHandler) {
    ...
}
request(function() {
    // change happened
    ...
});
Run Code Online (Sandbox Code Playgroud)

3.节点样式回调("nodeback"):

function getStuff(dat, callback) {
    ...
}
getStuff("dataParam", function(err, data) {
    ...
})
Run Code Online (Sandbox Code Playgroud)

4.具有节点样式回调的整个库:

API;
API.one(function(err, data) {
    API.two(function(err, data2) {
        API.three(function(err, data3) {
            ...
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

如何在promises中使用API​​,我该如何"宣传"它?

javascript callback node.js promise bluebird

680
推荐指数
12
解决办法
20万
查看次数

657
推荐指数
15
解决办法
33万
查看次数

如何从异步回调函数返回值?

在SO中多次询问这个问题.但我还是得不到东西.

我想从回调中获得一些价值.请查看下面的脚本以获得说明.

function foo(address){

      // google map stuff
      geocoder.geocode( { 'address': address}, function(results, status) {
          results[0].geometry.location; // I want to return this value
      })

    }
    foo(); //result should be results[0].geometry.location; value
Run Code Online (Sandbox Code Playgroud)

如果我试图返回该值只是"未定义".我从SO那里听了一些想法,但仍然失败了.

那些是:

function foo(address){
    var returnvalue;    
    geocoder.geocode( { 'address': address}, function(results, status) {
        returnvalue = results[0].geometry.location; 
    })
    return returnvalue; 
}
foo(); //still undefined
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous callback javascript-objects

440
推荐指数
3
解决办法
33万
查看次数

承诺不仅仅是回调吗?

我已经开发了几年的JavaScript,我根本不理解有关承诺的大惊小怪.

似乎我所做的只是改变:

api(function(result){
    api2(function(result2){
        api3(function(result3){
             // do work
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以使用像async这样的库,例如:

api().then(function(result){
     api2().then(function(result2){
          api3().then(function(result3){
               // do work
          });
     });
});
Run Code Online (Sandbox Code Playgroud)

哪个代码更多,可读性更低.我没有在这里获得任何东西,它也不会突然神奇地"平坦".更不用说必须将事物转换为承诺.

那么,这里的承诺有什么大惊小怪?

javascript callback promise q bluebird

402
推荐指数
7
解决办法
9万
查看次数

array_map,array_walk和array_filter之间的区别

究竟是什么区别array_map,array_walkarray_filter.我从文档中看到的是,您可以传递一个回调函数来对提供的数组执行操作.但我似乎没有发现它们之间有任何特别的区别.

他们做同样的事吗?
它们可以互换使用吗?

如果它们完全不同,我将非常感谢您的帮助.

php arrays callback

362
推荐指数
4
解决办法
16万
查看次数

如何用简单的英语解释回调?它们与从另一个函数调用一个函数有什么不同?

如何用简单的英语解释回调?它们与从调用函数中获取某些上下文的另一个函数调用一个函数有什么不同?如何向新手程序员解释他们的权力?

language-agnostic terminology function callback

334
推荐指数
20
解决办法
16万
查看次数

C++中的回调函数

在C++中,何时以及如何使用回调函数?

编辑:
我想看一个简单的例子来编写回调函数.

c++ function-pointers callback

281
推荐指数
8
解决办法
38万
查看次数