热搜:pottle北京小瓶科技服务社区
当前位置: 北京小瓶科技服务社区 » 查看admin的资料

async/await 用法总结

async 是单独协程的异步运行,并且async的内部通过多个 await 实现内部同步写法,解决全部异步的时序错乱问题
最典型的用途 是 实现微信9张图片上传,可以得到准确的结果,然后做不同跳转,ajax 和  单独promise 做不到


async 的返回的一定是一个promise  至于 是进入 resolve 的then() 还是  进入reject 的 catch(){}  可以让async 内同步写法的判断

结合 try - catch - throw

return 是 resolve 的 then()
throw  是 reject 的 catch()


例子见mshop客户端的发帖前联网检测是否上传用户头像和昵称部分

  1. export let UpdateUdataFromNet = async ()=>{

  2.     //

  3.     if(!global_Uid){
  4.         //MshopToast('用户数据同步开始失败')
  5.         throw 'skip'
  6.     }

  7.     try {
  8.         let response = await fetch(global_API_URL+'?action=UpdateUdataFromNet&uid=' + global_Uid)
  9.         let responseJson = await response.json()
  10.         if (responseJson.error) {
  11.             MshopToast(responseJson.error)
  12.             throw responseJson.error
  13.         }
  14.         global_Uinfo = JSON.parse(responseJson.content)
  15.         Push.RegDevicetoken()
  16.         return;
  17.         
  18.     } catch (error) {
  19.         MshopToast('用户数据同步位未能完成')
  20.         throw new Error(error);
  21.     }


  22. }

所在版块:IT技术 - 发表时间: 2019-06-26 02:23

rn statuebar 的惊天巨坑

ios 上面始终都有一个banner 底隐藏都隐藏不掉的,原来是 react navigation 的 safe area 导致的
这样去掉后就可以和安卓保持一致,全app沉浸式

所在版块:IT技术 - 发表时间: 2019-06-25 20:47

使用cocoapods时常见错误

错误1、当写在Podfile文件中的第三方框架,不能使用,找不到时
查看Pods文件夹,是否下载了所需要的第三方框架,没有的话就 pod update

错误2、
Could not automatically select an Xcode project. Specify one in your Podfile like so:xcodeproj 'path/to/Project.xcodeproj'
在Podfile文件里指定下工程目录就行了
xcodeproj 'Demo/Demo.xcodeproj'

但是如果cocoapods版本为(1.0.0或更高)的话,可能会有以下警告
[!] xcodeproj was renamed to `project`. Please use that from now on.
这时只需要把xcodeproj改为 project就行了
project 'Demo/Demo.project'

错误3、The dependency `AFNetworking (~> 3.0)` is not used in any concrete target.
在Podfile中添加
target‘项目名'do  (如  target 'Demo' do )

错误4、[!] Invalid `Podfile` file: syntax error, unexpected end-of-input, expecting keyword_end.
在Podfile的末尾添加 end

错误5、Unable to find the Xcode project `/Volumes/BIAO/iOS/code/MBWB.xcodeproj` for the target `Pods`.
在Podfile中 将  project 'Demo/Demo.project’  改成  project 'Demo.project'

错误6、build diff: /../Podfile.lock: No such file or directory
在工程设置中的Build Phases下删除Check Pods Manifest.lock及Copy Pods Resources

2018
错误7、 RuntimeError - [Xcodeproj] Unknown object version.[Xcodeproj] Unknown object version. /Applications/CocoaPods.app/Contents/Res...
原因: Xcode 版本和 CocoaPods 的版本不匹配,需要更新 CocoaPods
解决方法:终端输入命令 $ gem install cocoapods --pre

还有一个更新慢的问题:无论是执行pod install还是pod update都卡在了Analyzing dependencies不动
原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
补充:cocoapods也有了自己的客户端,可以直接使用 https://cocoapods.org/app

所在版块:IT技术 - 发表时间: 2019-06-25 12:15

分享安卓8.0的系统rom 红米note4X机型

分享安卓8.0的系统rom
安卓8的系统大都会是8.1的  这个是红米note4X机型  非常适合app开发测试

链接: https://pan.baidu.com/s/1ccfDA3w7-GLsQ2t6PrEQTg 提取码: mxtw 复制这段内容后打开百度网盘手机App,操作更方便哦

所在版块:linux操作命令及shell - 发表时间: 2019-06-17 15:37

安卓类原生rom发行版

https://downloads.aospextended.com/

https://download.lineageos.org/

所在版块:linux操作命令及shell - 发表时间: 2019-06-17 15:19

英文版应用上架谷歌应用商店 google play 的网路问题折腾记

先感叹网络环境复杂啊
①由于防火墙升级了,常用工具全部被请喝茶ko掉

②自己做一个自己定制加密规则的软件(不透漏,不售卖)

③win10好慢,卸载掉各种卫士全家桶

④三大网络运营商有的是白名单,有的是黑名单(居然不统一)

所在版块:IT技术 - 发表时间: 2019-06-15 13:08

json循环输出

json循环输出只能用 for in (es5语法)

  1. for (const k in myjson){        //}
for of (es6)语法不能用在json上吗,可以用在其他任何有length属性的类型。
  1. for( const [k,v] of mymap){        //}

所在版块:IT技术 - 发表时间: 2019-06-10 15:53

git 从本地创建仓库

从线上创建本地仓库一般直接 git clone

有时候,github 太大下载太慢,或者其他网络原因,只能先下载,然后从本地创建一个和网络对应的

就需要

  1. git init
  2. git remote add origin https://github.com/CocoaPods/Specs.git
参考:

git remote remove 远程库名(删除该远程库)
例:git remote remove origin(一般都是叫origin)
git remote add 远程库名 远程库地址(添加另外远程库)
例:git remote add origion https://。。。。。
git remote rename 旧名称 新名称(改变远程库的名字)
例:git rename origin origin1(把origin改成origin1)

所在版块:IT技术 - 发表时间: 2019-06-09 21:43

react native RN 安卓原生代码优化部分

react native RN 安卓原生代码部分整体比较粗糙
我认为达到能用的地步起码要改的代码有

①支持开屏页面,不是欢迎页,而是加载时候的开屏页面


②如果后台已经存在当前app点击桌面图标,不应该重启app


③安卓返回键最好能把app退出到后台,而不会直接kill掉


主要改 MainActivity.java  参考:

  1. public class MainActivity extends ReactActivity {

  2.     /**
  3.      * Returns the name of the main component registered from JavaScript.
  4.      * This is used to schedule rendering of the component.
  5.      */
  6.     @Override
  7.     protected String getMainComponentName() {
  8.         return "Mshop";
  9.     }



  10.     //退出隐藏到后台
  11.     @Override
  12.     public void invokeDefaultOnBackPressed() {
  13.         // do not call super.invokeDefaultOnBackPressed() as it will close the app.  Instead lets just put it in the background.
  14.         moveTaskToBack(true);
  15.     }



  16.     @Override
  17.     protected void onCreate(Bundle savedInstanceState) {
  18.         //如果在后台桌面点击不重启
  19.         if (!this.isTaskRoot()) {
  20.             Intent mainIntent = getIntent();
  21.             String action = mainIntent.getAction();
  22.             if (mainIntent.hasCategory(mainIntent.CATEGORY_LAUNCHER) && mainIntent.ACTION_MAIN.equals(action)) {
  23.                 finish();
  24.                 return;
  25.             }
  26.         }


  27.         SplashScreen.show(this,true);  // true means full screen

  28.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);  //禁止截图


  29.         super.onCreate(savedInstanceState);

  30.     }


  31. }

所在版块:IT技术 - 发表时间: 2019-06-05 13:34

win10 win7 解决局域网共享的办法

win10 win7  的局域网做的稀烂,各种共享不了,各种慢,密码不行等,真怀念win xp时代啊

但是今天发现和mac组网却很溜,mac 和window 局域网用的smb服务


Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置”NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源



win7/win10 自带有smb服务,但是默认不开启,开启后可以大大的兼容提升,兼容xp,linux,mac


开启路径:控制面板-》程序-》程序和功能-》开启关闭windows功能-》smb 1.0和smb直通

所在版块:IT技术 - 发表时间: 2019-05-24 13:36

Android.support 升级到 AndroidX

最操蛋的是点是这个两个库不同时兼容
目前用到的第三方包里面只有少数支持AndroidX
那就把支持AndroidX的倒退到 Android.support 吧


等到将来少数Android.support的时候,再修改 Android.support
工作量最少原则

所在版块:IT技术 - 发表时间: 2019-05-19 20:13

商标注册起名

只要沾边的基本都已经被注册了

商标域名,一系列不好搞

从古诗词里筛选汉字组合是个非常不错的选择:

http://www.shicimingju.com/

所在版块:推广中心 - 发表时间: 2019-04-23 12:32

本地修改 npm 安装的包 node_modules里面的文件

新版npm本来是不支持本地直接修改 npm 包内容的,官方推荐方案是 fork 一个新git库,然后从哪里 npm intall 自己爱怎么改就怎么该,那你自己的新仓库

但是问题来了:


但是现实是很多时候真的是 npm的只有一点瑕疵,需要该一样代码,值不得官方推荐的那一套,何况还要github国内又不快,直接改了,node_modules里面的文件
只要有新的npm任意操作就会从线上纠正过来,简直封掉啦

npm现在不想走python管理的老路只能强制不让乱该,至少node  module 里面的东西完全不让该,添加一个空目录都不行的


虽然有npm link等办法,但是还是不方便的,比如干扰了全局的node,比如不再项目目录ide开发不方便


最实用的版本,在线版本该怎么装还得怎么装,要不下面的依赖没有了也出error的
然后自己再建一个根目录,每次npm操作后,覆盖一下就ok,等到线上版本修复了,赶紧用最新版本吧

所在版块:IT技术 - 发表时间: 2019-04-09 23:08

claygl 目前最好的基于webgl的3d渲染引擎了

http://claygl.xyz/

百度的echart也在用

所在版块:IT技术 - 发表时间: 2019-03-25 17:39

多版本node不能用npm时候

现在很多面板都有node管理 多版本node不能用npm时候
需要找到 npm 文件 在头部的node命令前面加上绝对路径

所在版块:IT技术 - 发表时间: 2019-03-18 17:03

安卓查看app闪退原因: adb logcat AndroidRuntime:E *:S

安卓查看app闪退原因: adb logcat AndroidRuntime:E *:S

清理以前的: adb logcat -c

所在版块:IT技术 - 发表时间: 2019-03-13 11:15

RN release 版闪退


RN发布bundle的js时候,babel编译结果不能很好的在目标机运行,会导致release版本和debug版本有差别,release有错误。



按照个这个配置可以解决问题。

  1. {
  2.   "presets": ["module:metro-react-native-babel-preset"],
  3.   "plugins": [
  4.     ["@babel/plugin-proposal-decorators", { "legacy": true }],
  5.     ["@babel/plugin-transform-spread", {
  6.       "loose": true
  7.     }]
  8.   ]
  9. }

所在版块:IT技术 - 发表时间: 2019-03-13 11:02

babel nodejs 语法提升es6 es7 标准用法

babel nodejs 语法提升es7 标准用法


安装 babel-core 核心  babel-cli 命令行   babel-preset-env 预设

  1. npm install --save-dev @babel/core @babel/cli @babel/node @babel/preset-env
编辑根目录  .babelrc   env 默认最高语法都支持  node current 可以刚好转到当前node版本支持的语法,这样转换量最小
  1. {
  2.   "presets": [
  3.     ["babel/preset-env", {
  4.       "targets": {
  5.         "node": "current"
  6.       }
  7.     }]
  8.   ]
  9. }
生产环境和开发环境,假设 index.js 为项目入口文件 node start 为启动命令 ,编辑 package.json
  1. "scripts": {
  2.    "build": "rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./.babelrc,./package.json,./npm-debug.log --copy-files",
  3.    "start": "npm run build && node dist/index.js",
  4.     "test": "npx babel-node index"
  5. }
先运行build指令,让babel 把index.js 转换成 低版本JavaScript,并放到 dist 目录里面 ,然后直接执行低版本对应javaScript

所在版块:IT技术 - 发表时间: 2019-03-06 19:11

es6 promise 链状写法必须 catch 中必须有中断

promise 有链状写法,避免了地狱回调的多层嵌套的反人类写法

如:

fetch('XXXXXXXXXXXX')
.then()
.then()
.then()
.then()
.catch()

catch 中一般要用  throw 或者 console.error 等来中断 链条 避免错误的基础上再更多错误,甚至后面的语法错误导致系统crash
经验之谈

所在版块:IT技术 - 发表时间: 2019-03-06 13:25

loT开发中 usb-modeswitch 不会自动转换网卡模式的问题

loT开发中
手动执行没有问题,但是不会自动转换,开机不会自动,插拔也不会



文件件  /lib/udev/rules.d/40-usb_modeswitch.rules

# Realtek 8211CU Wifi AC USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"

即:run 后面改为完整命令行就可以

不要问why

所在版块:linux操作命令及shell - 发表时间: 2019-03-04 22:22

用babel让nodejs支持import

https://babeljs.io/docs/en/env#b ... -ship-native-es2015

bable可以给js代码做转化,但是如果全部转成es2015,新版node引擎支持是支持,但是转换工作量大,有可能影响运行的效率。新版的node只差import没有支持,所以没有全部代码都转成es2015必要。

采用上面的最新预设可以自动检测当前的版本做到自动最优最少转码

所在版块:IT技术 - 发表时间: 2019-02-27 00:12

filezilla适配windows xp系统

filezilla适配windows xp系统
filezilla 3.8 是filezilla最后对一个xp版本

所在版块:IT技术 - 发表时间: 2019-02-07 18:10

震惊!建设一个完整独立的微信小程序已经低至¥99元

小瓶云商震惊小程序行业!建设一个完整独立的微信小程序已经低至¥99元人民币

下面是情景再现:
一天,办公室老板对“全栈程序员”小G说:“小G,最近通过本老板的观察发现小程序现在挺火的,多少成本咱们也能上线一个独立小程序,¥99元如何”
以“全栈程序员攻城狮”自诩的小G轻蔑的对老板说:“你放心吧!¥99元我保证可以双击打开微信开发工具的。”
两天后,于是“全栈程序员攻城狮小G被第81次炒鱿鱼了,老板也为没能上线属于自己小程序而郁闷不已。

what?!¥99元软妹币还不够一顿像样饭钱,能上线一个独立的微信小程序,你tm耍我吗?
产品原型,UI设计,前端开发,后端开发,数据库,网络服务器部署...这些¥99再加两个零一块¥9999也不够。

但是,¥99元上线一个独立小程序名片真的被做到了,那就是小瓶云商发布的独立小程序名片2.0(个人品牌小程序)

独立小程序名片2.0特性:
①微信小程序搜索关键词 ②发送到手机桌面 ③小程序菊花二维码 ④一键导入完整通讯录 ⑤微信聊天留存 ⑥微信下拉留存 ⑦个人名称即为小程序名称 ⑧用户留言通知
适用客户群:
①商务人士 ②公司高管 ③企业员工 ④律师 ⑤任何需要宣传自己的人 ⑥所有人(o(∩_∩)o 因为这是自媒体时代)

所在版块:推广中心 - 发表时间: 2019-01-09 18:27

npm 中包更新大版本后会有一些文件找到不到,缓存错误



npm start -- --reset-cache


清理下nmp缓存即可

所在版块:IT技术 - 发表时间: 2018-12-18 13:33

react 父组件中更新子组件的state 和 子组件中更新父组件中state

react 父组件中更新子组件的state
附件传 props 给子组件  一般用父组件的动态 state ,子组件中  componentWillReceiveProps 周期是存在期用改变的props来判断更新自身state
其他方法如用ref的setState方法等不推荐




react
子组件中更新父组件中state
最常规的方法是 父组件中预设一个 fuction 通过props 传给子组件,子组件伺机调用

所在版块:IT技术 - 发表时间: 2018-12-16 13:37
277条记录

admin

管理员
帖子
272 
金钱
702 
魅力
702 
威望
702 
注册
2013-04-06 
TA的粉丝(0)