无法理解JavaScript中的回调。请检查

By simon at 2018-02-07 • 0人收藏 • 40人看过

我写了我的代码来测试回调。但我得到答案5 直接为两个电话。我需要2和5分别。如何实现它。 var count = 0;

function increment(number, callback) {
    count = count + number;
    setTimeout(callback, 10000);

}

var done = function() {
    console.log(`count is :${count}`);
};
increment(2, done);
increment(3, done);

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

你马上把这个数字加到count **,然后安排一个 回调来显示结果。这意味着一旦两个电话来 increment运行,count是5.然后20和50秒 后来,这是显示。你可以看到如果我们在拨打电话后做console.log(计数 :$ {count} );两次调用后(我把超时降到2和 5秒S):

var count = 0;

function increment(number, callback) {
  count = count + number;
  setTimeout(callback, 1000);

}

var done = function() {
  console.log(`count is :${count}`);
};
increment(2, done);
increment(3, done);
console.log(`count after calls :${count}`);
相反,您需要在计时器中添加number到count 回调(我已经把超时降到了2和5秒):
var count = 0;

function increment(number, callback) {
  setTimeout(function() {
    // Our timer callback fired, update count
    count += number;
    // Call the main callback
    callback();
  }, 1000);
}

var done = function() {
  console.log(`count is :${count}`);
};
increment(2, done);
increment(3, done);

登录后方可回帖

Loading...