2017-02-17 5 views
0

ここでは、書きたい関数のテストを示します。初心者の非同期値の受け渡しとJavaScriptでの返信

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

この投稿が明確でない場合は教えてください。この投稿が冗長であれば私を許してください、私が見つけたsimular投稿は私のために進んでいました。ご協力ありがとうございました!

答えて

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 
}) 
関連する問題