我正在尝试js中的es6以及async/await。
我所做的是:
HTML代码
<input type="button" onclick="javascript:examplefunction()" />
Js代码在单独的example.Js文件中,该文件通常包含在html中。
const somefunction = (...args) => {
let result = feedReducer(args);
// do something
}
这个很好用。但是由于我必须使用wait for其他函数,在examplefunction()中,我使用了普通的arrow函数来异步,如下所示
const somefunction = async (...args) => {
let result = await feedReducer(args);
// do something
}
现在我正在得到
未捕获的SyntaxError:await仅在异步函数中有效
我被困在这里,我做错了什么?我在这里采用了上述语法。如有任何建议,我们将不胜感激。谢谢
实际功能:
const preparationManager = async (...args) => {
console.log(args.length);
let feed_type = args[0], feed_id = args[1], feed_name = args[2], product_count = args[5];
let index = args[7] | 0;
jQuery("#loader").show();
jQuery.ajax({
url: 'index.php?option=com_cartproductfeed&task=tranquilizer.formatFeedsToParentChildJson',
type: 'POST',
dataType:'json',
data: {feed_type: feed_type, feed_id:feed_id, feed_name: feed_name, index:index },
success: function (res) {
if(res.success === true){
if(res.do_repeat === true){
args.push(res.index);
preparationManager(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
}else{
console.log("feedreducer");
let result = await feedReducer(args, res);
console.log('result',result)
console.log("after result")
}
//window.location.href = base_url + 'index.php/etsy-listings';
}else{
console.log(res);
}
jQuery("#loader").hide();
}
})
};
const feedReducer = async (...args) => {
jQuery.ajax({
url: 'index.php?option=com_cartproductfeed&task=tranquilizer.formatFeedsToParentChildJson',
type: 'POST',
dataType:'json',
data: {feed_type: feed_type, feed_id:feed_id, feed_name: feed_name, index:index },
success: function (res) {
if(res.success === true){
if(res.do_repeat === true){
args.push(res.index);
let reducerPromise = feedReducer(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
console.log(reducerPromise);
}else{
//TODO : handle completion of feedreducer
}
//window.location.href = base_url + 'index.php/etsy-listings';
}else{
console.log(res);
}
jQuery("#loader").hide();
}
})
};
使用
document.getElementById("idButton").onclick=async ()=>{
// await promiseExample();
};
嗨Suz尝试以下代码它是为我工作。
function feedReducer(args){
return new Promise((res,rej)=>{
res(args);
})
}
const somefunction = async (...args) => {
let result = await feedReducer(args);
console.log(result);
// do something
}
somefunction('hello');
未捕获的SyntaxError:await仅在异步函数中有效
上述错误表明feedReducer不是异步函数
确保feedReducer返回promise。祝你好运
问题内容: 首先,这是一个非常特殊的情况,它以错误的方式故意将异步调用改型为一个非常同步的代码库,该代码库长成千上万行,并且当前时间不具备进行更改的能力。对的。” 它伤害了我的每一个生命,但是现实和理想往往并没有相互融合。我知道这很糟糕。 好的,顺便说一句,我该如何做,这样我可以: 示例(或缺少示例)全部使用库和/或编译器,这两种库均不适用于此解决方案。我需要一个如何使其冻结的具体示例(例如,在调
问题内容: 假设您维护一个公开一个函数的库。您的用户调用它来获取实际数据: 数据被保存在文件中,因此您可以使用内置的Node.js来实现。很明显这两个和是同步的功能。有一天,您被告知将基础数据源切换到只能异步访问的仓库(例如MongoDB)。还被告知要避免惹恼您的用户,API不能更改为仅返回promise或要求回调参数。您如何满足这两个要求? 使用回调/承诺的异步功能是JavasSript和Nod
本文向大家介绍JavaScript 异步调用,包括了JavaScript 异步调用的使用技巧和注意事项,需要的朋友参考一下 问题 可修改下面的 aa() 函数,目的是在一抄后用 console.log() 输出 want-value 但是,有额外要求: aa() 函数可以随意修改,但是不能有 console.log() 执行 console.log() 语句里不能有 setTimeout 包裹 解
我有一个UserControl上的事件,我正在听: 具有以下签名: 在以下情况下,如何调用此异步方法: 不阻塞GUI线程 在调用我的异步方法后能够调用 能够在正确的(GUI)线程中调用。 我所尝试的: -- -- --
问题内容: 我有一个异步函数,要连续多次调用。问题是“多个”可以是几十万或数百万… 显而易见的方法是从回调中调用相同的函数,如下所示: 当然,涉及一些逻辑来停止递归。问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 问题答案: 问题是堆栈是否充满了调用,并可能在某些时候导致堆栈溢出? 否。 如果调用回调是异步传递的,则不会堆积堆栈。 在您的代码中: 这是逐步发生的事情: 首先被称为。 然后
当导航到带有防护装置的页面时,已或都会打印到控制台(在等待 firebase 响应的一段时间后)。但是,导航永远不会完成。另外,如果我没有登录,我会被重定向到路由。因此,我遇到的问题是 不会向用户显示请求的页面。我假设这是因为我正在使用回调,但我无法弄清楚如何做到这一点。有什么想法吗?