Как вернуть переменную из обратного вызова? - PullRequest
0 голосов
/ 13 марта 2019

Я новичок, и теперь у меня возникают проблемы с возвратом значения из функции обратного вызова

function SumCallback(var1,var2,callback){
callback(var1+var2)
}

function Sum(var1,var2){
SumCallback(var1,var2,function(result){
console.log(result) //5
return result
})
}

console.log(Sum(3,2)) //undefined

Как я могу вернуть значение правильным способом?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Это может работать:

function SumCallback(var1, var2, callback) {
  callback(var1 + var2)
}

function Sum(var1, var2) {
  let sumResult = 0
  SumCallback(var1, var2, function (result) {
    // return result
    sumResult = result
  })
  return sumResult
}

console.log(Sum(3, 2)) //undefined

плюс, лучше использовать Promise или async/await при работе с callback

0 голосов
/ 13 марта 2019

Выполнение выглядит так

| -> Это вызывает "SumCallback"

| -> Это вызывает "обратный вызов"

| ---> Этовызывает console.log (result)

| ---> return «result»

| -> return undefined

| -> return undefined

Вам нужно только вернуть обратный вызов.

function SumCallback(var1,var2,callback){
 return callback(var1+var2)
}

function Sum(var1,var2){
 return SumCallback(var1,var2,function(result){
  console.log(result) //5
  return result
 })
}

console.log(Sum(3,2)) //5

Новое выполнение выглядит так

| -> Это вызывает «SumCallback»

| -> Это вызывает«обратный вызов»

| ---> Это вызывает console.log (результат)

| ---> возвращать «результат»

| -> вернутьзначение «обратного вызова» (результат)

| -> вернуть значение «SumCallback» (результат)

...