OceanOver's Blog

个人博客


  • 首页

  • 归档

Async/Await 优雅的异步代码

发表于 2017-04-08 | 更新于 2018-12-08

JavaScript的异步编程方式有效提高了应用性能;但有时候使用回调函数来组织代码往往会导致代码难以阅读。Promise让我们告别回调函数,可以将嵌套的回调函数展平,写出更优雅的异步代码;在实践过程中,却发现Promise并不完美,这时,我们有了Async/Await。

ES7 中有了更加标准的解决方案,新增了 async/await 两个关键词。async 可以声明一个异步函数,此函数需要返回一个 Promise 对象。await 可以等待一个 Promise 对象 resolve,并拿到结果。

Async/Await简介

  • async/await是基于Promise实现的,它不能用于普通的回调函数。
  • async/await与Promise一样,是非阻塞的。
  • async/await使得异步代码看起来像同步代码。
阅读全文 »

JavaScript 学习之正则篇

发表于 2017-01-07 | 更新于 2018-12-08

正则表达式可以极大的提高复杂文本分析的效率,快速匹配出复杂的字符串。

阅读全文 »

ES6函数拓展 - 箭头函数

发表于 2017-01-07 | 更新于 2018-12-08

ES6允许使用“箭头”(=>)定义函数,且总是匿名函数。

1.基本语法

1
2
3
4
5
6
7
8
9
10
11
(param1, param2, …, paramN) => { statements }

(param1, param2, …, paramN) => expression
//等同于
(param1, param2, …, paramN) => { return expression; }

// 如果只有一个参数,圆括号是可选的:
singleParam => { statements }

// 无参数的函数需要使用圆括号:
() => { statements }
阅读全文 »

Promise学习之bluebird(基础篇)

发表于 2017-01-07 | 更新于 2018-12-08

bluebird是一个第三方的Promise实现,除了Promise对象中的方法外,bluebird还有很多扩展方法。如,可以通过.spread()展开结构集、可以通过Promise.promisify()方法将一个Node回调函数包装成一个Promise实例。

安装bluebird模块后,可以就可以通过require获取对模块的引用:

1
var Promise = require('bluebird');

阅读全文 »

react学习之组件生命周期

发表于 2016-11-03 | 更新于 2018-12-08

概述

学习iOS时我们会去研究视图控制器的生命周期,理解控制器从创建到销毁。联想到React,其组件也有从创建到销毁的过程。在组件的生命周期中,随着组件props或state的改变,其DOM表现形式也会有所变化。在生命周期的不同阶段,React提供了不同的处理函数使我们能够实现对组件整个生命周期内的控制和处理。

阅读全文 »

iOS9和Xcode7中 Stack Views 介绍

发表于 2016-04-23 | 更新于 2018-12-08
  • 原文:An Introduction to Stack Views in iOS 9 and Xcode 7

此前,我们已经谈到了swift2的新功能,从这个教程开始,我们将含盖iOS9中的一些很酷的新功能。iOS新版本中添加了许多新特新。对于开发者来说,Stack View的介绍值得首提。我知道有些开发者发现使用自动布局来设计复杂的用户界面很困难。Stack views正是为了帮助我们,使开发人员的工作变得更容易。

阅读全文 »

如何使用Xcode的Targets来管理开发和生产构建

发表于 2016-04-10 | 更新于 2018-12-08
  • 原文:How to Use Xcode Targets to Manage Development and Production Builds
  • 参加CocoaChina翻译活动时所译

编者提示:这篇文章由Eugene Trapeznikov贡献。想象一下,你已经完成了您的应用程序的开发和测试,你现在准备提交生产版本。问题是,一些web服务的url指向测试服务器,同时API密钥被配置用于测试环境。在提交app给苹果审核前,你需要修改所有这些API密钥和URL适应生产版本。这听起来不错,对吧?但是相较于在开发和生产环境之间来回切换,有没有更好的方法来处理开发和生产的构建?这正是接下来Eugene要和你们讨论的。

阅读全文 »

iOS中category添加属性

发表于 2015-10-07 | 更新于 2018-12-08

我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量。不过从Mac OS X v10.6开始,系统提供了Associative References,这个问题就很容易解决了。这种方法也就是所谓的关联(association),我们可以在runtime期间动态地添加任意多的属性,并且随时读取。

阅读全文 »

block的一些基础

发表于 2015-09-29 | 更新于 2018-12-08

在异步编程时我们经常进行函数回调,由于函数调用是异步执行的,我们如果想让一个操作执行完之后执行另一个函数,则无法按照正常代码书写顺序进行编程,因为我们无法获知前一个方法什么时候执行结束,此时我们经常会用到委托或者代码块(Block)。Block就是一个函数体(匿名函数),它是ObjC对于闭包的实现,在块状中我们可以持有或引用局部变量,同时利用Block你可以将一个操作作为一个参数进行传递(是不是想起了C语言中的函数指针)。

阅读全文 »

动画基础之CALayer

发表于 2015-09-28 | 更新于 2018-12-08

之所以介绍CALayer,是因为CALayer是深入了解iOS动画开发的重要基础内容。CALayer包含在QuartzCore框架中,这是一个跨平台的框架,既可以用在iOS中又可以用在Mac OS X中。在使用Core Animation开发动画的本质就是将CALayer中的内容转化为位图从而供硬件操作,所以要熟练掌握动画操作必须先来熟悉CALayer。

阅读全文 »

12

OceanOver

个人博客,记录学习历程

13 日志
14 标签
© 2018 OceanOver
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v6.6.0