为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

萧十郎 2022-01-20 18:36:35
如何将值返回给调用异步代码的函数而不是下一个?出于演示目的,我编写了以下代码段来演示我的问题。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>脚本.jsclass fetchDemo{  constructor(dummy){    this.dummy=dummy    let msg= this.alienMsg();    console.log(msg);  }    alienMsg(){  fetch('./file.txt')  .then(response => response.text())  .then(body =>{     console.log(body);    return body;  })  .then((txt)=>{    console.log(txt)  });  }}new fetchDemo(null);文件.txtI am on a mission to invade earth但是,当您运行它时,您会得到不明确的我的任务是入侵地球我的任务是入侵地球我如何返回以便msg也记录I am on a mission to invade earth而不是记录undifined?
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

JavaScript 是一种同步、阻塞、单线程的语言。这只是意味着一次只能进行一项操作。


尝试使用回调函数


class fetchDemo{

    constructor(dummy){

      this.dummy=dummy;

      this.alienMsg(function(data) {

        console.log(data);

      });

      

    }

  

    alienMsg(callback){

        fetch('./file.txt')

            .then(response => callback(response.text()))

            .then(body =>{ 

                callback(body);

        })

        .then((txt)=>{

            callback(txt);

        });

    }

  }

  new fetchDemo(null);


查看完整回答
反对 回复 2022-01-20
?
千万里不及你

TA贡献1784条经验 获得超9个赞

经过不断尝试,我暂时使用 JavaScript 承诺解决了这个问题


但是我不会将我的答案标记为正确


注意:我不得不放弃使用 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));

})();


查看完整回答
反对 回复 2022-01-20
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信