分配给变量的函数返回未定义

时间:2019-06-18 00:05:36

标签: javascript ecmascript-6

我创建了一个函数,该函数将剪贴板中的内容保存在变量text中。

我想将函数输出返回到另一个名为my_text的变量,但是我不能这样做。 我必须这样做,因为我想将一些NLP算法应用于my_text

我得到my_text is undefined

function paste() {
  navigator.clipboard.readText()
  .then(text => {

    console.log(text);
    return text
  })
  .catch(err => {
    console.error("Failed to read clipboard contents: ", err);
  });

}

var my_text = paste()`

我认为是因为我的函数paste()是异步的,但是我仍然不确定如何将它返回的内容赋给变量。

2 个答案:

答案 0 :(得分:1)

您不会从函数中返回任何内容,而只是返回内部函数。

return navigator.clipboard.readText().then(...).catch(...);

或者,使用async函数。

async function paste() {
  try {
    const text = await navigator.clipboard.readText();
    console.log(text);
    return text;
  } catch(er) {
    console.log(err);
  }
}

答案 1 :(得分:0)

您没有从粘贴函数返回任何内容。尝试这个。

  function paste() {
    navigator.clipboard
      .readText()
      .then(text => {
        //call another function
        //or simply do the paste operation here
        processTextFurther(text);
      })
      .catch(err => {
        console.error("Failed to read clipboard contents: ", err);
      });
  }

  function processTextFurther(copiedText) {
    console.log(copiedText);
  }