javascript - 如何在 "linked"方法调用中有条件语句?

标签 javascript

有没有更简洁的方式来编写这段代码?只有 .trim() 语句不同。

if (imageOptions.trim) {
    // Trim
    gm(imageBuffer, 'image.' + imageOptions.imageFormat)
        .gravity(imageOptions.gravity)
        .resize(imageOptions.imageWidth, imageOptions.imageHeight, '^')
        .crop(imageOptions.imageWidth, imageOptions.imageHeight)
        .trim()
        .toBuffer(imageOptions.imageFormat.toUpperCase(), callback);
}
else {
    // No trim
    gm(imageBuffer, 'image.' + imageOptions.imageFormat)
        .gravity(imageOptions.gravity)
        .resize(imageOptions.imageWidth, imageOptions.imageHeight, '^')
        .crop(imageOptions.imageWidth, imageOptions.imageHeight)
        .toBuffer(imageOptions.imageFormat.toUpperCase(), callback);
}

奖金问题:这些“链接”方法调用的正确术语是什么?

最佳答案

您可以将这些方法调用的结果分配给一个变量,然后有一个条件,不需要完整地编写整个链:

var img = gm(...)
            .gravity(..)
            .resize(..)
            .crop(..);

if (imageOptions.trim) {
    img.trim();
}

img.toBuffer(..);

这些东西被称为链式方法调用

关于javascript - 如何在 "linked"方法调用中有条件语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527858/

相关文章:

javascript - JQuery 可以监听其他 javascript 的 AJAX 调用吗?

javascript - AngularJS 自定义过滤器被调用两次

javascript - 一个对象如何在JavaScript中实现Event接口(interface)

javascript - firefox 在 "sdk/system/events"api 中检测标签 ID

javascript - 如何将委托(delegate)事件分配给特定的 Dom 元素

javascript - json 对象内的对象值未在嵌套 ng-repeat 中求值

javascript - jQuery 日期时间格式化程序

javascript - 在Microsoft Outlook 2013应用程序上使用所选签名消息打开加载项时,权限被拒绝

javascript - Owl Carousel 不显示

.net - "Microsoft JScript compilation error: Expected ' ; '"调用ASMX Web服务