您的位置:首页 > 大数据 > 人工智能

await is a reserved word 以及将forEach方法的参数改为async函数出现的问题

2017-11-28 10:14 417 查看
engine.registerHandler('breakpoint:*/EvaluateTest.java:*', async (event, arg1, arg2, detail) => {
utils.pathEquals(breakpointFile, detail.source.path).should.equal(true);
detail.line.should.equal(expectedLines[linePos++]);
console.log('***threads', await engine.threads());
let evaluateArguments = [{
type: "const",
request: "1+2",
expectedResponse: 3
}, {
type: "variable",
request: "i+1",
expectedResponse: 2
}, {
type: "notExistVariable",
request: "a",
expectedResponse: "a cannot be resolved to a variable"
}, {
type: "function",
request: "test()+10",
expectedResponse: 13
}];

let evaluateTest = async arg => {
let evaluateResponse;
try {
evaluateResponse = await engine.evaluate(arg.request, detail.id, "watch");
if (arg.type !== "notExistVariable") {
console.log("******", "Evaluate " + arg.type);
assert(evaluateResponse.result.toString() === arg.expectedResponse.toString());
}
}
catch (ex) {
if (arg.type === "notExistVariable") {
console.log("******", "Evaluate not exisist variable");
assert(ex.message.includes(arg.expectedResponse));
}
}

};

for (let ele of evaluateArguments) {
await evaluateTest(ele);
}

再用babel转码的时候遇到了await is a reserved word的错误,查了资料才知道await命令只能用在async函数之中,而async与await都是对promise的操作
let evaluateTest=async function(arg),
另外一个问题就是起初用的是evaluateArguments.forEach(async function(ele){await evaluateTest(ele)}) 用了大量的console.log()之后发现将forEach方法的参数改成
async函数,evaluateTest(ele)是并行执行也就是同时执行而不是继发执行。




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐