如何从回调函数获取值?

时间:2019-01-03 08:40:56

标签: javascript callback settimeout

我需要在setTimeout函数中获取变量的值。做一些关于回调函数的研究。使用它,我确实获得了价值,但是我只能弄清楚如何提醒它或控制台记录它。现在,我需要将其分配给变量。

function x(callback){
    setTimeout(function(){
      length = text.length;
      callback(length);
    },100, text);
  }
  x(console.log.bind(console));

此控制台正确记录长度。现在如何获取值,以便将其分配给变量?

我希望将长度值分配给函数外部的长度变量,以便可以对其进行进一步操作。我将如何去做?

2 个答案:

答案 0 :(得分:0)

function x(callback){
    setTimeout(function(){
      length = text.length;
      callback(length);
    },100, text);
  }
  x(console.log.bind(console));

代替传递长度作为参数。传递文字以回电。并在回调函数中。获取文本字段的长度。

功能x设置参数callback,因此您不能将其用作功能 创建另一个函数回调并使用dif名称

传递参数

例如:

var text = "abc";

function x(text){
    setTimeout(function(){
      callback(text);
    },100, text);
  }

  function callback(text){
    console.log(text);
    console.log(text.length);
  }

  x(text);

答案 1 :(得分:-1)

您可以使用回调。

function x(callback){
  setTimeout(function(){
    length = text.length;
    callback(length);
  },100, text);
}
let yourLength;
x(length => {
  console.log(length);
  yourLength = length
  // Do something else
});

此外,您不应仅将长度分配给变量,因为它是异步执行的。我添加了将代码分配给yourLength变量的代码。但是,当执行了调用回调后的代码时,您无法确定回调已全部返回并且变量具有值。

一个更好,更易读的解决方案是使用promisesasync methods and await