jjzjj

synchronization

全部标签

javascript - 使用 Angular 标记列表中的修改元素

我想同步数据,因此我有一个包含当前状态的数据对象。更改后,我想在对象上设置一个属性,以便在同步时可以按此进行过滤。对象结构为:data={type1:[{a:"a",b:"b"},...]type2:[{c:"c",d:"d"},...]}例如,如果data.type1[0].a="test"完成,我想添加modified:true到对象,这样它就可以了{a:"test",b:"b",modified:true}我试过$watch(data,function(),true)但我找不到如何查看更改了哪个对象并且搜索两个给定数据对象的开销很大。$watchcollection(当只是寻找添

事件处理程序中的 JavaScript 同步和关键部分

我有一个函数,它是websocket.onmessage的事件处理程序,现在由于服务器可以发送多条消息(一条接一条)并且每条消息都会触发该事件,并且由于函数block可能需要几秒钟(内部进行了大量渲染),可能会在第一个函数调用仍在运行时再次调用该函数。在某些情况下,我需要在此函数中使用关键block,以便第二次调用只会在第一次调用结束时启动关键部分,这被认为是在JavaScript中实现锁的“最佳实践”? 最佳答案 由于js是单线程的,所以不能真正做锁。好吧,你可以但你不应该。一个想法可能是保留状态变量。您的函数将在每个onmess

javascript - 没有乱七八糟的回调的 JavaScript 异步编程

我想将异步函数转换为同步函数。functionfetch(){varresult='snap!';$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",functionmessyCallback(data){result=data;});returnresult;}document.write(fetch());​Seeinaction结果总是“啪!”,因为$.getJSON在fetch()完成后运行。我的第一个

javascript - Worker 使用同步 XMLHttpRequest 从 GUI 获取数据

我想要一个WebWorker它位于调用堆栈的深处,能够发出同步请求以从GUI获取信息。GUI本身没有被阻塞——它能够处理消息。但是worker栈上的JavaScript并没有写在async/await中。风格。它只是很多同步代码。因此,如果GUI尝试使用postMessage将响应发送回worker,那只会卡在onmessage()队列中。我发现了至少一种适用于当今浏览器的hack。工作人员可以向GUI发送消息以获取它想要的信息——连同某种ID(例如UUID)。然后它可以生成同步XMLHttpRequest--whichisnotdeprecatedonworkers--使用该ID发送

javascript - 同步 JQuery.post()

我正在编写一个小脚本,通过一个循环进行单独的AJAX调用,我遇到了一个很可能是显而易见的问题。似乎循环将快速处理使用ajax接收的数据,导致它只加载循环中的最后一段数据。我添加了一个警告框,它逐步完成迭代并可以很好地加载数据,但它在用户环境中不实用。代码只是一个jquery.post(),在for循环中有一个回调。我可以根据要求发布代码,但我觉得这可以口头解决。有人知道按顺序加载数据的解决方法或更好的方法吗?编辑.ajaxSetup()是否修改了.post()?也许我可以用它来更改.post()..的异步值。 最佳答案 我的frie

javascript - 使用生成器 + promise 在 Firefox SDK 附加组件中/与 Firefox SDK 附加组件进行 "simulated synchronous"通信

TL;DR:有什么方法可以重写这个基于回调的JavaScript代码以改用promises和生成器吗?背景我有一个使用FirefoxAdd-onSDK编写的Firefox扩展.与SDK一样,代码分为附加脚本和contentscript。.这两个脚本具有不同类型的权限:附加脚本可以做一些奇特的事情,例如,通过js-ctypes调用native代码。界面,而内容脚本可以与网页交互。然而,附加脚本和内容脚本只能通过异步message-passinginterface来彼此交互。.我希望能够从普通的非特权网页上的用户脚本调用扩展代码。这可以使用称为exportFunction的机制来完成这样一

go - sync.Once 执行

我对Go1.12中的sync.Once()有疑问。源代码如下://BecausenocalltoDoreturnsuntiltheonecalltofreturns,iffcauses//Dotobecalled,itwilldeadlock.func(o*Once)Do(ffunc()){ifatomic.LoadUint32(&o.done)==1{return}//Slow-path.o.m.Lock()defero.m.Unlock()ifo.done==0{deferatomic.StoreUint32(&o.done,1)f()}}为什么不直接使用uint32变量,然后对该

go - 不明显的死锁情况

您能解释一下为什么会出现这种僵局吗?packagemainimport("sync""fmt""runtime")funcmain(){m:=sync.RWMutex{}gofunc(){m.RLock()runtime.Gosched()m.RLock()m.RUnlock()m.RUnlock()}()runtime.Gosched()m.Lock()m.Unlock()fmt.Println("works")}我不太清楚为什么这种死锁总是经常发生。这会不会是调度器的一个怪癖? 最佳答案 来自RWMutex文档:Ifagorou

dictionary - 使用 sync.Map 确保只有一个 goroutine 正在运行

我有一个HTTP处理程序,它从查询中接收一个参数。我不想为相同的查询参数同时运行此处理程序,即在某个时间点应该只运行一个goroutine。这是我的想法:import"sync"import"fmt"varsafeMap=sync.Map{}funchandler(c){_,loaded:=safeMap.LoadOrStore(c.param,1)//loadedistrueifvaluewasloadedandfalseifstoredfmt.Println(loaded)ifloaded{c.JSON(http.StatusLocked,"locked")return}godoW

go - "selective"goroutines 互斥

我是Go的新手,我想实现一个自定义的互斥机制,每个应用程序用户一次可以执行一个goroutine。为简化起见,将U1和U2视为应用程序用户以及F1(userId)、F2(userId)和F3(userId)三个不同的goroutine,它们从数据库读取/写入记录仅与给定用户相关.我希望,如果U1调用(F1、F2、F3)、(F2、F3)在F1结束之前不执行,那么执行F2或F3(按调用顺序将是最佳解决方案),最后剩下的被执行。U2不受U1锁的影响,但如前所述,她由自己的锁控制。你将如何实现?有内置的原语吗?谢谢 最佳答案 使用sync.