jjzjj

asynchronous

全部标签

javascript - 递归调用异步函数

我有一个异步函数,我想连续多次调用它。问题是“多”可以是几十万,也可以是几百万……显而易见的方法是从回调中调用相同的函数:functionfoo(){asyncBar(foo);}当然涉及一些逻辑来停止递归。问题是堆栈是否充满了调用并可能在某个时候导致堆栈溢出? 最佳答案 Thequestioniswhetherthestackisfillingwithcallsandmaycausestackoverflowatsomepoint?否。如果asyncBar()调用异步传递的回调,则没有堆栈堆积。在您的代码中:functionfoo

javascript - 有没有一种很好的方法来 Promise.all 具有 promise 属性的对象数组?

如果我有一组promise,我可以简单地使用Promise.all来等待它们。但是当我有一个对象数组时,每个对象都有一些promises的属性,有没有好的方法来处理它?例子:constfiles=urlOfFiles.map(url=>({data:fetch(url).then(r=>r.blob()),name:url.split('/').pop()}))//whattodoheretoconverteachfile.datatoblob?//likePromise.all(files,'data')orsomethingelse 最佳答案

javascript - 不等待函数的异步方法 - VUE

我遇到了这个错误,虽然在MDN和此处进行了大量研究,但还没有解决它。正如标题在VUE中所说,我正在尝试使用异步和等待,但js没有等待“等待”功能结束。在这里:methods:{asyncsearch(terms,done){console.log('1.')this.filter=this.$refs.chipsInput.inputawaitthis.loadtags()console.log('3.')done(this.tagsList)},loadtags(){this.$axios.get('/api/tags/?id__icontains=&id=&name__iconta

javascript - 如何从嵌套的匿名函数返回值给父函数

我有一个javascript函数,它应该返回一个字符串的地理编码:functioncodeAddress(address){varresult=(newgoogle.maps.Geocoder()).geocode({'address':address},function(results,status){if(status==google.maps.GeocoderStatus.OK){returnString(results[0].geometry.location.Ya)+','+String(results[0].geometry.location.Za)}else{return

javascript - rxjs 在 map Rx.Observable.range(1, 5).map 中使用 async/await

我想使用async/await从rxjs获取列表。我该怎么办?functiongetData(num){returnnewPromise((resolve,reject)=>{resolve(num+1)})}asyncfunctioncreate(){varlist=awaitRx.Observable.range(1,5).map(async(num)=>{constdata=awaitgetData(num)returndata}).toArray().toPromise()returnlist}Rx.Observable.fromPromise(create()).subscr

javascript - jQuery Deferred/Promises 动态数组未按正确顺序执行回调

感谢您深入了解我在这里的误解。我的要求如下:我有一个URL数组。我想同时为每个URL发出AJAX请求,并在第一个请求完成后立即调用第一个回调。然后,如果第二个请求完成,则调用该回调,依此类推。选项1:for(vari=0;i显然这行不通,因为无法保证响应将按正确顺序完成。选项2:varpromises=[];for(vari=0;i这应该可行,但缺点是它会等到所有AJAX请求完成后,才会触发任何回调。理想情况下,我应该能够在第一个回调完成后立即调用它,然后链接第二个回调以在收到该响应时执行(或者如果它已经解析则立即执行),然后是第三个,依此类推。数组长度是完全可变的,并且可以在任何给定

javascript - queue.js 是如何工作的?

我一直在努力理解MikeBostock'squeue.js有效,但我看不到它是如何工作的。我不明白的部分是代码如何设法继续执行回调。特别是,我不确定pop()方法(第45行)。据我了解,该方法采用下一个未处理的延迟函数;附加一个回调,它(可能)启动队列中的下一个延迟函数,并在立即弹出的函数完成时执行;然后最终执行所述功能。我的问题是:什么代码执行这个回调? 最佳答案 每个延迟函数实际上并不返回任何东西——它们应该作为回调执行它们的最终参数。例如,这将不起作用varfoo=function(i){console.log(i);retu

javascript - 并行 API 请求的异步模块错误

我是node.js的初学者,现在我正在尝试获取一些API的结果。我正在使用异步模块(https://github.com/caolan/async)来并行处理请求,以便对其进行优化。问题是代码返回错误,每次都指向不同API调用中的不同行(“callback(err,data)”行)这是错误的:if(called)thrownewError("Callbackwasalreadycalled.");^Error:Callbackwasalreadycalled.我正在使用以下函数来请求API:functiongetData(s,apiURL,getURL,callback){varht;

javascript - 在 Node.js 中继续之前如何等待函数完成

我正在尝试在Node.js/Express中创建一个路由,该路由从两个查询中读取数据,然后根据来自查询的数据增加一个计数。由于Node.js是异步的,因此在读取所有数据之前会显示我的总数。我创建了一个简单的例子来说明我目前正在做的事情varexpress=require('express');varrouter=express.Router();vartotal=0;/*GEThomepage.*/router.get('/',function(req,res,next){increment(3);increment(2);console.log(total);res.end();})

javascript - 使用 jquery.when 和 done 将值从一个 ajax 调用传递到另一个

我试图在第二次ajax调用中使用第一次ajax调用的值。我正在使用下面的代码结构。出于某种原因,第二次调用为userLocationvariable返回undefined。我如何重构我的代码,以便可以在第二个ajax调用的url中使用第一个ajax调用的userLocation值?varuserLocation;functiongetUserLocation(){$.ajax({url:'https://www.example.com/location.json',success:function(response){userLocation=response.coordinates;