初学者异步值传递和返回javascript

时间:2017-02-17 21:16:41

标签: javascript asynchronous

这是我正在尝试编写的函数的测试。

 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);
}

如果这篇文章不清楚,请告诉我,我会对其进行编辑。请原谅我,如果这篇文章是多余的,我发现的类似帖子对我来说是先进的。谢谢你的帮助!

1 个答案:

答案 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
})