我要写一个方法给别人用, 是 http请求的,大致是这样
pub_get(url){ var out require(‘http’).get(rul,function(){ out=http结果 }) wait(异步结束) return out }
其实就是一个等待的过程 要高效的实现,把异步的方法做成同步的 补充: 官方提供fs.readFileSync() 和fs.readFile() 我们自己写一个同步的方法有这么难么?
用promise库,其他无解
好好的异步不用?
无论从那条路走,nodejs总有绕不过去的坑
promise + co 自豪地采用 CNodeJS ionic
@yakczh 用人家的框架肯定是有现成的限制。无解。
@Antoni1883 co是非常轻量级的 实在不行可以自己看了修改 其次Promise不是库 而是规范你可以自己实现 他的问题也可以用类似promise和emitter的方式来解决 自豪地采用 CNodeJS ionic
@wenshiqi0 官方提供fs.readFileSync() 和fs.readFile() 我们自己写一个同步的方法有这么难么? 模仿写一个难么?
Generator node --harmony somefile.js
@youwi 不难的 用co和promise可以做 只是看上去还是不太一样 官方的我倒是没有看过源码 但估计底层是不一样的 不能一概而论 自豪地采用 CNodeJS ionic
你在选型阶段都选择了node 那么就一定会大量遇到异步 要想通过封装来完全消除异步不是不行 但是看上去也不会是完全的同步代码 现在很多的异步方案实际上仍然是callback的语法糖 所以外部要完完全全用同步的语法来 对于没有fiber和协程的node来说我个人认为是不可能的 自豪地采用 CNodeJS ionic
如果能允许*和yield的话 就可以考虑generator了 也就是co库 自豪地采用 CNodeJS ionic
- 事件
- promise
- es7 async/wait (babel)
@wenshiqi0 node v12.0.1 版本是不是不支持呀! 然后用了 node --harmay 运行也不行…
*和yield的CO库
为什么nodejs不搞象golang那样的channel呢?
@youwi 你就直接用iojs就可以了 反正iojs和node也重新合并了 iojs对es6的支持更好 如果你加了co没有报错 只是结果不对 那就是你用错了 自豪地采用 CNodeJS ionic
@yakczh 因为作者坚持走异步io的路线 压根不准备弄协程 自豪地采用 CNodeJS ionic
npm install -g xd-synchttp
安装完成后,示例代码如下。
const sync = require('xd-synchttp');
let content = "";
try{
content = sync.http_get('http://www.csdn.net',0);//0为不超时,其他数值为超时秒数
}
catch(err){
console.log(err);
}