草庐IT

Async-await

全部标签

javascript - ES8 立即调用异步函数表达式

我没有看到这些构造被广泛使用,但我发现自己编写它们是为了在通常不会返回promise的函数中使用async/await,例如chan.consume(queue,(msg)=>{this.pendingMsgs++;//executedimmediately(async()=>{awaitthis.handleMessage(msg);this.pendingMsgs--;if(cancelled&&this.pendingMsgs===0){awaitchan.close();awaitthis.amqpConnectionPool.release(conn);}})();});相对

javascript - this.setState 是否在 react 中返回 promise

我使我的componentWillMount()异步。现在我可以将await与setState一起使用。示例代码如下:componentWillMount=async()=>{const{fetchRooms}=this.propsawaitthis.setState({})fetchRooms()}所以这里的问题是this.setState返回promise因为我可以使用await吗?编辑当我放置await时,它会按顺序运行1,2,3当我删除await时,它会运行1,3,2??componentWillMount=async()=>{const{fetchRooms}=this.pr

javascript - Lodash:是否可以将 map 与异步功能一起使用?

考虑这段代码constresponse=awaitfetch('');constresponseJson=awaitresponse.json();responseJson=_.sortBy(responseJson,"number");responseJson[0]=awaitaddEnabledProperty(responseJson[0]);什么addEnabledProperty做的是扩展对象添加一个enabled属性(property),但这并不重要。函数本身运行良好asyncfunctionaddEnabledProperty(channel){constchannelI

javascript - 当您忘记 `await` Javascript 中的异步函数时如何发出警告?

我正在使用Babel和Webpack。如果我忘记await一个异步函数,它通常会被忽视。偶尔,如果我忘记了await,异步函数就会出错,我会收到Unhandledpromiserejection。然后,我意识到我忘记了await。当我忘记添加await时,有没有办法得到警告? 最佳答案 no-floating-promisesESLint规则要求您显式处理任何promise(例如使用await或void)。这是用于TypeScript的最小.eslintrc。请注意,此规则需要parserOptions:{"root":true,"

javascript - jQuery 延迟 : use to delay return of function until async call within function complete + get return value

如何正确使用jQuerydeferreds来延迟函数的返回,直到函数内的异步调用完成+获取返回值?这是我当前的代码:functiongetFields(page){vardff=$.Deferred();result={};$.ajax(//theasynccall{url:page,success:function(data){//workoutvaluesforfield1&field2fromdatahereresult={'field1':field1,'field2':field2};},complete:function(){dff.resolve(result);//my

javascript - react-native async 函数返回 promise 但不是我的 json 数据?

我正在学习react-native,但遇到了一个问题。为什么在从异步函数返回时获取数据会返回一个promise,但在异步函数本身中,它会正确返回一个对象数组?在componentDidMount()上,我调用我的异步函数,该函数依次获取apiurl:componentDidMount(){letdata=this.getData();console.log(data);//在console.log(json)中,我得到了正确的json对象列表,我可以使用json[0].name访问它们。但稍后,console.log(data)返回一个包含奇数数据的promise:Promise{_4

javascript - 链式异步函数

在异步函数中,我可以获得一个异步值,如下所示:constfoo=awaitmyAsyncFunction()如果我想在结果上调用一个方法,使用同步函数,我会做类似myAsyncFunction().somethingElse()的事情是否可以使用异步函数链接调用,或者您是否必须为每个结果分配一个新变量? 最佳答案 我更喜欢将第一个结果赋值给一个中间变量,我个人觉得它更具可读性。如果你愿意,你可以在表达式中等待,而不需要给它赋值。您所要做的就是使用括号。看我的例子:constfoo=await(awaitmyAsyncFunction

javascript - 如何在没有评估的情况下检测异步功能支持?

这是检测当前引擎是否支持异步函数的一种方法:constsupportsAsyncFunctions=(()=>{try{newFunction('async()=>{}')();}catch(error){returnfalse;}returntrue;})();但是有没有办法不使用eval或Function来做到这一点? 最佳答案 建议的eval方法将对CSP错误给出漏报,因为它们未被处理。如果这是一个问题,可以按thisanswer中所示处理CSP错误。.可以这样做,但解决方案一点也不漂亮,并且涉及外部脚本。脚本可以设置标志,或

javascript - 何时将函数标记为异步

基本上,如果函数内部使用了await,函数必须以async关键字为前缀。但是,如果某个函数只返回Promise而没有等待任何东西,我应该将函数标记为async吗?好像都对不对?//withasync(returnsPromise)asyncgetActiveQueue(){returnredisClient.zrangeAsync(activeQueue,0,-1);}//difference?Bothcouldbeawaitedisn'tit?getActiveQueue(){returnredisClient.zrangeAsync(activeQueue,0,-1);}

javascript - async/await 可以在构造函数中使用吗?

正如问题所述。我可以这样做吗:classMyClass{asyncconstructor(){returnnewPromise()}} 最佳答案 为了扩展PatrickRoberts所说的内容,您不能按照您的要求去做,但您可以改为这样做:classMyClass{constructor(){//staticinitialization}asyncinitialize(){awaitWhatEverYouWant();}staticasynccreate(){consto=newMyClass();awaito.initialize(