Comments (2)
Yes, this the way JavaScript works when passing around references to functions. When calling a function, the context is essentially what comes before the '.', so calling test2 as myTest.test2(cb) would work, but doing:
var fn = myTest.test2;
fn(cb);
won't work. async.js has no knowledge of the myTest object, only the value of myTest.test2. You'll need to replace myTest.test2 in the async.series call with a function which calls it with the correct context like this:
async.series([
test1,
function (cb) {
myTest.test2(cb);
}
], ....
That will mean test2 is called with the correct value for this. Its possible to avoid the use of 'this' in some circumstances by using a closure. By using closures and a more functional style you can mostly avoid this headache.
Example using closure:
var MyTest = function(){
var that = this;
this.test2 = function (cb) {
console.log('test2');
console.log(that);
setTimeout(cb,200);
}
};
var myTest = new MyTest();
This stores a reference to 'this' in the variable 'that', which will stay in scope for the function test2, and is accessible from that function no matter how you call it later on.
Hope that helps
from async.
thanks for explanation :)
The thing is that the code defining MyTest.test2 is from another module (node-couchdb). I actually wrapped the calls in anonymous functions as in your example and It works of course. thank you.
from async.
Related Issues (20)
- functions called by `async.*` return values prematurely? HOT 6
- Is it possible to support `AsyncGenerator` HOT 2
- Support queue.clear besides queue.kill HOT 1
- Multicore HOT 2
- use 'async/mapLimit' in Chrome 43 has error HOT 2
- reflect does not use Error message HOT 1
- Enable OpenSSF Scorecard Github Action and Badge
- How to call functions to execute sequentially? HOT 1
- async package should distribute both cjs and esm HOT 1
- Add adaptive functions HOT 1
- with async.queue order of execution is different when using promises instead of callbacks but should be identical HOT 2
- How to figure version of async required? HOT 1
- Async causing issues with callback function HOT 2
- callback is not a function HOT 3
- Java
- Github
- Vulnerability in the async dependency HOT 1
- vulnerability in async module HOT 2
- Error propagation - Original error lost HOT 4
- How to reproduce Subtle Memory Leak? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from async.