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