这是我正在尝试编写的函数的测试。
var chai = require('chai');
var doLater = require('../05-callback');
var expect = chai.expect;
describe('05-callback', function () {
it('Can get secret number', function (done) {
doLater(function (secret) {
expect(secret).to.equal(1337);
done();
});
});
});
我编写的代码以异步方式向控制台记录消息,但此代码不会异步返回1337值。
function doLater(secret) {
var code = 1337;
(function setImmediate(code) {
console.log("I will be executed immediately");
return code;
})(code);
setTimeout(function secret(code) {
console.log("I will be executed in 2 seconds.");
return code;
}, 2000);
}
如果这篇文章不清楚,请告诉我,我会对其进行编辑。请原谅我,如果这篇文章是多余的,我发现的类似帖子对我来说是先进的。谢谢你的帮助!
答案 0 :(得分:2)
为了做你想做的事,你需要使用回调。例如:
function doLater(callback) {
setTimeout(function(){
//after 2 seconds call the callback
return callback(1337);
}, 2000)
}
//pass as param a function that will be called
doLater(function(result) {
console.log(result) //1337
})