在8util.promisifyNode.js的详细解决方案

在8util.promisifyNode.js的详细解决方案
Node.js上月8日到本月底正式发布,带来了许多新的特点,一个更值得注意的是,util.promisify()方法

Util.promisify()

虽然承诺已深入人心,但Node.js仍然有大量的异步回调函数依赖,如果我们每个人都是一个包的功能,自找麻烦,呼噜呼噜呼噜,比。

所以复发提供了util.promisify()方法,便于我们迅速改变原有的异步回调方法返回的实例的方式承诺。接下来,我们希望继续使用队列或等待查看需求。

让我们看一看这个例子:
const util =需要('util);
const FS =需要('fs);

const属性= util.promisify(FS,STAT);
统计(。)
然后
具有统计数据的东西
})
catch((错误)= {
错误。句柄
});

什么,很简单,对吧根据该文件,所有功能都可以转换,只要他们符合node.js.that回调风格,要满足以下两个条件

最后一个参数是函数
回调函数的参数是(错误,结果),前面是一个可能的错误,而后者是正常的结果。
结合等待 /异步

同样是上面的例子,如果你想将等待 /异步,你可以使用它像这:
const util =需要('util);
const FS =需要('fs);

const属性= util.promisify(FS,STAT);
异步函数readstats(DIR){
{试
让统计=等待统计(迪尔);
具有统计数据的东西
捕获(错误):处理错误。
console.log(ERR);
}
}
readstats(' ');
自定义承诺处理功能

如果该函数不符合这种风格,我们可以使用util.promisify()答案是肯定的,太。我们只是添加一个属性的功能,util.promisify.custom,并指定一个函数作为一个承诺处理功能。请看下面的代码:
const util =需要('util);

函数doSomething(Foo,回调){

}

做{ util。promisify。自定义功能(Foo){ } =
返回getpromisesomehow();
};

const promisified = util.promisify(做);
console.log(promisified =做{ util。promisify。自定义});
版画 / /真实
这样,任何时候我们承诺目标函数做,我们先前定义的函数,运行它,并返回到承诺情况根据我们设计了具体的逻辑。

我们可以升级所有以前的异步回调函数。

承诺的介绍

由于各种历史原因,有大量的js异步功能。这些功能进行异步回调。我认为将事件作为回调是合理的,但回调嵌套级别不止一个,这就导致了所谓的回调陷阱,这使开发人员苦不堪言。
为了解决这一问题,开发界已经摸索并总结了一套解决方案,称之为承诺+ +,一般来说,该方案通过使用回调回调实例封装原有的回调函数来封装和扩展原来的嵌套复杂,从而降低了开发和维护的难度和成本。
新建承诺((解析,拒绝))
someasyncfunction((呃,结果)= > { / /呼叫感应原函数
如果错误,进入错误处理模式
返回拒绝(错误);
}
解析(结果);一切正常,下一步是进入队列。
});
})
然后(下一个链接)
返回doSomething(结果);
})
。然后(2 = > { / /和下一个环节
返回dosomething2(2);
})
所有中间链接…
catch(错误处理)
console.log(ERR);
});
es2015(6)包括在承诺的标准,现在是运行在大多数的设备,我们可以放心大胆的使用。此外,因为承诺并不需要新的语法元素,即使在环境不支持本土的诺言,类库可以使用,如Q或蓝知更鸟,或即使是jQuery。

在小程序中也是有效的。

es2017添加等待 /异步语法,但请注意,等待必须遵循的一个承诺,实例是异步的。所以,让我们学会承诺的概念。
功能resolveafter2seconds(x){
返回新的承诺
(setTimeout()= > {
解析(x);
},2000);
});
}

异步函数f1(){
var x =等待resolveafter2seconds(10);
console.log(x); / / 10
}
(F1);

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部