简体   繁体   English

如何在将值赋给javascript / mocha中的变量之前等待函数返回值

[英]How to wait for a function to return a value before assigning it to a variable in javascript/mocha

Please look at my Mocha test: 请查看我的Mocha测试:

it.only('verify Lot in CFR List',function(done)){
this.timeout(20000);
var data = ui.cfrVerifyLot(); //calling cfrVerifyLot() method from another file
data.then(function(result) {
  console.log(result); // 'getting undefined' 'expecting success or failed'
  if(result=='success'){
    done();
  }
});
}

It seems that ui.cfrVerifyLot() method is assigning returned valued before finishing itself. 似乎ui.cfrVerifyLot()方法在完成自身之前就分配了返回值。 How can make it wait to assign the result before it gets finished completely. 如何让它在完全完成结果之前等待分配结果。

This is my cfrVerifyLot() function: 这是我的cfrVerifyLot()函数:

cfrVerifyLot:function(){

    var result = '';
    const rest = require('./restAPI');
    const puppeteer = require('puppeteer');
    const assert = require('chai').assert;
    const cfg = require('../config-env.json');
    const objR = require('../obj-repo/obj-c.json');
    puppeteer.launch({
    //headless:false
}).then(async browser => {

    /*
    making some UI navigations
    */
    try{
    const innerText = await page.evaluate(() => document.querySelectorAll('some element name')[1].innerText);
    var str = innerText.substring(0,8);
    await page.waitFor(2*1000);
    if(str===input_lot_number){
      result = 'success'
      }          
    }
    catch(err){
      result = 'failed'  
    }
    finally{
      await browser.close();
      return result
    }
    });
},

You can use the async and await operators. 您可以使用asyncawait运算符。

 it.only('verify Lot in CFR List',async function(done)){
    this.timeout(20000);
    var result = await ui.cfrVerifyLot();
      console.log(result); // 'getting undefined' 'expecting success or failed'
      if(result=='success'){
        done();
      }
    });
    }

EDIT Your cfrVerifyLot function returns no value. 编辑您的cfrVerifyLot函数不returns任何值。 instead the result is returned from the pupperteer . 相反, result是从pupperteer返回的。 Change the puperteer's then chain to use await so you return the result value directly from the function. 将操作puperteer's then链更改为使用await以便直接从该函数返回result值。

cfrVerifyLot:async function(){

    var result = '';
    const rest = require('./restAPI');
    const puppeteer = require('puppeteer');
    const assert = require('chai').assert;
    const cfg = require('../config-env.json');
    const objR = require('../obj-repo/obj-c.json');
    let browser = await puppeteer.launch({//headless:false})
     /*
    making some UI navigations
    */
    try{
    const innerText = await page.evaluate(() => document.querySelectorAll('some element name')[1].innerText);
    var str = innerText.substring(0,8);
    await page.waitFor(2*1000);
    if(str===input_lot_number){
      result = 'success'
      }          
    }
    catch(err){
      result = 'failed'  
    }
    finally{
      await browser.close();
      return result
    }  
},

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 NodeJS 中,如何等待条带 API 等待返回价格 object,然后再将值分配给 object 变量并推送到数组? - In NodeJS how do I wait for stripe API await to return price object before assigning value to object variable and pushing to array? Javascript将回调函数的返回值分配给全局变量 - Javascript assigning the return value of a Callback function to global variable 在继续执行之前,如何等待javascript承诺返回值? - How to wait for javascript promise to return value before continuing execution? 在Mocha中如何从异步函数中的返回值先于在函数中的相同描述中使用相同的值? - How return value from async function in before in mocha and use same value in same describe in function? 如何使角度等待函数在继续之前返回值 - How to make angular wait for a function to return a value before proceeding 将php返回值分配给javascript变量 - assigning php return value to a javascript variable 功能在分配正确的值之前不等待分配响应 - function doesnt wait for response to be assigned before assigning the correct value 在触发回调之前等待返回 function 值 - wait for return function value before callback triggered Jquery 等待 Function 的返回值后再继续 - Jquery Wait for Return Value of Function before Continuing JavaScript:将匿名函数分配给变量时,不传递函数返回值,而是将函数作为字符串传递 - JavaScript: When assigning an anonymous function to a variable, function return value is not passed, rather the function as a string
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM