无论如何要在同一功能中的其他人之前运行特定的等待动作?

理查德·吴
await ipfs.files.add(this.state.file, (err,result) => {
      if(err){
        console.log(err);
        return
      }
    console.log('profile hash ' + result[0].hash);
    this.setState({profilePic : result[0].hash , continue : true});
    });
    this.setState({loading : true,visible : 'true'});

    console.log('gender value is ' + this.state.gender);
    const accounts = await web3.eth.getAccounts();
    console.log( 'the value of profilepic is ' + this.state.profilePic);

      if(this.state.profilePic == '')
      {
        console.log('waiting');
      }else{
        try{
          this.setState({continue : false});
          console.log('profile hash again ' + this.state.profilePic);
          await Patient.methods.insertPatient(
                accounts[0],
                this.state.surname,this.state.givenname,
                this.state.gender,this.state.age,
                this.state.email,this.state.language,
                this.state.nationality,this.state.phone,
                this.state.medicalno,this.state.profilePic)
                .send({
                  from : accounts[0],
                });
        }
       catch (e) {
        console.log(e);

      } finally {
        this.setState({loading : false,visible : 'false'});
      }
    }

我让这个 await ipfs add 文件先运行,然后第二个 await 获取第一个 await 的结果,然后继续。如果第一个等待尚未完成,我希望第二个等待等待谢谢

尼古拉斯大厦

为了await产生任何有意义的效果,您需要等待一个承诺。如果您等待非承诺,它不会抛出任何异常,但它也不会延迟移动到下一个代码。

要将使用回调编写的代码转换为 Promise,您需要将其包装在一个新的 Promise 中。对于您的情况,这可能如下所示:

await new Promise((resolve, reject) => {
  ipfs.files.add(this.state.file, (err,result) => {
    if(err){
      reject(err);
      return;
    }
    console.log('profile hash ' + result[0].hash);
    this.setState({profilePic : result[0].hash , continue : true});
    resolve(result);
  });
});

现在您正在等待承诺,此异步函数的执行将暂停,直到该承诺得到解决。异步函数中稍后的代码直到那时才会运行。

如果您对 ipfs.files.add 进行了大量调用,您可能需要创建一个辅助函数来为您创建承诺。如:

function add(file) {
  return new Promise((resolve, reject) => {
    ipfs.files.add(file, (err, result) => {
      if (err) { 
        reject(err);
      } else {
        resolve(result);
      }
    });
  }
}

// to be used as:
const result = await add(this.state.file);
console.log('profile hash ' + result[0].hash);
this.setState({profilePic : result[0].hash , continue : true});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何与同一网络中的其他人共享油灰会话/屏幕?

来自分类Dev

我如何关闭其他人的功能,除了在PHP中的cornjobs?

来自分类Dev

在其他人完成之前调用的方法

来自分类Dev

SQL员工在同一部门寻找其他人

来自分类Dev

如何使VBA通过单击链接或在其他人收到电子邮件时在Outlook电子邮件中单击一次运行?

来自分类Dev

SourceTree / Git中是否可以选择在推送之前检查其他人的代码?

来自分类Dev

SourceTree / Git中是否可以选择在推送之前检查其他人的代码?

来自分类Dev

Maven插件可以阻止其他人运行

来自分类Dev

如何在不影响其他人的情况下冻结pygame中的特定实例

来自分类Dev

如何在给定的 div 之下,在其他人之上创建一个 div,但不改变其他人的位置?

来自分类Dev

每年如何在特定日期向其他人发送提醒

来自分类Dev

Ubuntu如何提升特定核心并让其他人闲置

来自分类Dev

在WIX安装中停止其他人的服务

来自分类Dev

如何从Accurev中其他人的工作区中获取更改?

来自分类Dev

如何与Temple jinjia2或其他人一起显示结果?

来自分类Dev

如何在张量流中显式广播张量以匹配其他人的形状?

来自分类Dev

如何使用Google API在其他人的Google日历中读取/添加事件?

来自分类Dev

如何“抓住”投掷者;//其他人的API代码中未处理的“错误”事件?

来自分类Dev

如何从其他人拥有的文件夹中删除文件

来自分类Dev

如何从合并请求中的其他人删除提交

来自分类Dev

python - 如何让其他人检查三重引号中的信息

来自分类Dev

如何从字典中删除项目并更改其他人的键 F#

来自分类Dev

为什么在ggplot2中运行相同的注释功能对其他人有用,但对我却引发错误(美学长度)?

来自分类Dev

其他人的传奇

来自分类Dev

如何计算一个字符的出现次数,同时忽略谷歌表格中其他人出现的相同字符的其他出现次数?

来自分类Dev

页面上的弹出横幅,以通知其他人正在看同一页面

来自分类Dev

页面上的弹出横幅,以宣布其他人正在看同一页面时

来自分类Dev

如何在其他情况下与其他人一起使用variabels

来自分类Dev

如何将https强制为特定的URL,而其他人则不强制?

Related 相关文章

  1. 1

    如何与同一网络中的其他人共享油灰会话/屏幕?

  2. 2

    我如何关闭其他人的功能,除了在PHP中的cornjobs?

  3. 3

    在其他人完成之前调用的方法

  4. 4

    SQL员工在同一部门寻找其他人

  5. 5

    如何使VBA通过单击链接或在其他人收到电子邮件时在Outlook电子邮件中单击一次运行?

  6. 6

    SourceTree / Git中是否可以选择在推送之前检查其他人的代码?

  7. 7

    SourceTree / Git中是否可以选择在推送之前检查其他人的代码?

  8. 8

    Maven插件可以阻止其他人运行

  9. 9

    如何在不影响其他人的情况下冻结pygame中的特定实例

  10. 10

    如何在给定的 div 之下,在其他人之上创建一个 div,但不改变其他人的位置?

  11. 11

    每年如何在特定日期向其他人发送提醒

  12. 12

    Ubuntu如何提升特定核心并让其他人闲置

  13. 13

    在WIX安装中停止其他人的服务

  14. 14

    如何从Accurev中其他人的工作区中获取更改?

  15. 15

    如何与Temple jinjia2或其他人一起显示结果?

  16. 16

    如何在张量流中显式广播张量以匹配其他人的形状?

  17. 17

    如何使用Google API在其他人的Google日历中读取/添加事件?

  18. 18

    如何“抓住”投掷者;//其他人的API代码中未处理的“错误”事件?

  19. 19

    如何从其他人拥有的文件夹中删除文件

  20. 20

    如何从合并请求中的其他人删除提交

  21. 21

    python - 如何让其他人检查三重引号中的信息

  22. 22

    如何从字典中删除项目并更改其他人的键 F#

  23. 23

    为什么在ggplot2中运行相同的注释功能对其他人有用,但对我却引发错误(美学长度)?

  24. 24

    其他人的传奇

  25. 25

    如何计算一个字符的出现次数,同时忽略谷歌表格中其他人出现的相同字符的其他出现次数?

  26. 26

    页面上的弹出横幅,以通知其他人正在看同一页面

  27. 27

    页面上的弹出横幅,以宣布其他人正在看同一页面时

  28. 28

    如何在其他情况下与其他人一起使用variabels

  29. 29

    如何将https强制为特定的URL,而其他人则不强制?

热门标签

归档