首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.on事件检索值后返回promise

在.on事件检索值后返回promise
EN

Stack Overflow用户
提问于 2020-08-12 00:21:09
回答 1查看 88关注 0票数 0

我使用的是ml5.js PoseNet。我有一个接受图像的函数,我试图返回由PoseNet生成的单一姿势。我也想把这个值作为一个承诺返回。使用下面的toReturn,它在姿势生成完成之前返回,所以没有定义(我猜是因为异步的性质)。我该如何解决这个问题?

代码语言:javascript
复制
async function addPose(img){
    let options = {
        imageScaleFactor: 1,
        minConfidence: 0.1
    }

    let poseNet = ml5.poseNet(modelReady, options);

    function modelReady(){
        console.log('model loaded');
        let result = poseNet.singlePose(img);    // a promise of JSON value
        // return result;
    }

    let toReturn;

    poseNet.on('pose', function(results){
        toReturn = results[0]     // the JSON value
        // return results[0]
    })
    return toReturn;
}

EN

回答 1

Stack Overflow用户

发布于 2020-08-12 11:39:24

我不熟悉ML5.js,但您应该使用await来强制它在执行其他程序之前等待它返回。

例如:

代码语言:javascript
复制
let result = await poseNet.singlePose(img); 

要在模型加载后将其放入可调用函数中,您应该重新整理代码:

代码语言:javascript
复制
let modelLoaded = false;

async function loadModel() {

  let options = {
    imageScaleFactor: 1,
    minConfidence: 0.1
  }

  let poseNet = ml5.poseNet(modelReady, options);
}

loadeModel();


function modelReady(){
    console.log('model loaded');
    modelLoaded = true;

    // Feel free to register for events if you want:
    poseNet.on('pose', function(results){
      console.log(results[0]);
    });
}


function checkImage(img) {
  if (modelLoaded) {
    let result = poseNet.singlePose(img);
    return result;
  }

  return false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63362335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档