Я играл с обратными вызовами и сталкивался с этой проблемой, не зная, как это связано с обратными вызовами, но я не могу объяснить результат, любая помощь будет принята с благодарностью.Проблемы с обратным вызовом в javascript
Почему результат: 'hi samsamsamsamsamsamsamsamsamsamsamsam'
,
Я бы ожидать: 'hi sam'
function addSam(cb){
var name = '';
setTimeout(function(){
name += 'sam';
cb();
}, 1000);
}
function speak(){
console.log('hi ' + name);
}
Когда я звоню addSam(speak)
, на консоль возвращается:
'hi samsamsamsamsamsamsamsamsamsamsamsam'
Почему имя + = 'sam' происходит несколько раз?
Как я должен изменить код так, это происходит только один раз, и я могу выход просто:
hi sam
Ваш код будет печатать только ' "привет"'. Я чертовски уверен –
Это невозможно, хотя бы с кодом, который вы опубликовали. Я уверен, что у вас есть что-то еще, что вы здесь не позируете. Или вам не хватает 'var name = '';' в вашем реальном коде. – dfsq
Извините, я должен был быть ясен, я запускаю: addSam (говорить) в конце этого, это печатает «hi samsamsamsamsamsamsamsamsamsamsamsam» в консоли –