Javascript 如何将一个值返回给调用异步代码的函数,而不是下一个函数?

Javascript 如何将一个值返回给调用异步代码的函数,而不是下一个函数?,javascript,fetch,Javascript,Fetch,如何将值返回给调用异步代码的函数,而不是下一个 出于演示目的,我编写了以下代码片段来演示我的问题 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>repl

如何将值返回给调用异步代码的函数,而不是下一个

出于演示目的,我编写了以下代码片段来演示我的问题

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>repl.it</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <script src="script.js"></script>
  </body>
</html>
file.txt

I am on a mission to invade earth

当你运行这个程序时,你会得到

未定义

我的使命是入侵地球

我的使命是入侵地球

我如何返回,以便
msg
也记录
我的任务是入侵地球
,而不是
未定义的

JavaScript是一种同步的、分块的单线程语言。这仅仅意味着一次只能进行一个操作

尝试使用回调函数

classfetchdemo{
构造函数(虚拟){
这个。dummy=dummy;
this.alienMsg(函数(数据){
控制台日志(数据);
});
}
alienMsg(回调){
获取('./file.txt')
.then(response=>callback(response.text()))
.然后(body=>{
回调(体);
})
。然后((txt)=>{
回调(txt);
});
}
}
新fetchDemo(空)
经过不断的尝试,我暂时用JavaScript解决了这个问题

然而,我不会把我的答案标记为正确

NB:我不得不放弃使用JavaScript类

var alienMsg = new Promise(
    (res,rej)=>{
    fetch('./file.txt')
  .then(response => response.text())
  .then(body =>{ 
    //console.log(body);
    return body;
  })
  .then((txt)=>{
    //returning inside then using JavaScript promises resolve
    res(txt)
  });
    }
  );

(()=>{
alienMsg
.then(data=> console.log(data));
})();


我刚刚用我的代码替换了你的代码。给出:
Promise{}
undefined
undefined
可能
fetch
函数本身没有返回undefined,我不能确定,fetch函数在哪里?这是一个公共库还是你创建的?这是我创建的一个本地文件…我不认为fetch返回的是未定义的…你自己试试看,请用这个函数更改alienMsg函数,并让我知道结果
alienMsg(callback){fetch('./file.txt')。然后((txt)=>callback(txt));}
结果:
响应{}
var alienMsg = new Promise(
    (res,rej)=>{
    fetch('./file.txt')
  .then(response => response.text())
  .then(body =>{ 
    //console.log(body);
    return body;
  })
  .then((txt)=>{
    //returning inside then using JavaScript promises resolve
    res(txt)
  });
    }
  );

(()=>{
alienMsg
.then(data=> console.log(data));
})();