栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js / Q:连锁承诺依序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js / Q:连锁承诺依序

从您的示例来看,我认为您已经看到了Q自述文件中的Sequences部分,但未能理解它。

当每个函数的输出作为输入传递给下一个函数时,原始示例使用“瀑布”模型:

var funcs = [foo, bar, baz, qux];var result = Q(initialVal);funcs.forEach(function (f) {    result = result.then(f);});return result;

但是您只想按顺序执行我们所有的函数,因此您只需将每个函数与其变量绑定即可:

var args = ["first", "second", "third", "fourth"];var result = Q();args.forEach(function (t) {    result = result.then(treat.bind(null, t));});return result;

在我的示例中,

treat
函数将被顺序调用4次,并且
result
promise将使用最新
treat
调用的值来解决(所有先前调用的结果都将被忽略)。

诀窍是该

.then
方法接受一个处理程序,该处理程序将在当前promise解析后返回新的promise进行调用。因此,您应该传递给
.then
函数,该函数应在执行链的下一步中调用。
treat.bind(null,t)
treat
函数与属性绑定
t
。换句话说,它返回一个新函数,它将调用
treat
t
作为其第一个参数传递。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/623981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号