Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在我的nodejs编码中使用承诺链_Javascript_Node.js - Fatal编程技术网

Javascript 如何在我的nodejs编码中使用承诺链

Javascript 如何在我的nodejs编码中使用承诺链,javascript,node.js,Javascript,Node.js,上面的编码工作得很好,但我想使用上面的编码承诺链。请帮助我如何使用?您可以这样做: exports.updateMyData = function (data) { var resultPromise = Q.defer(); var errorResponse = function (err) { resultPromise.reject(err); }; findById(data.id).then(function (mydata) {

上面的编码工作得很好,但我想使用上面的编码承诺链。请帮助我如何使用?

您可以这样做:

exports.updateMyData = function (data) {
    var resultPromise = Q.defer();
    var errorResponse = function (err) {
        resultPromise.reject(err);
    };
    findById(data.id).then(function (mydata) {
        if (!mydata) {
            errorResponse("No item found to update");
        }
        mydata.updateAttributes(data).then(function (mydata) {
            resultPromise.resolve(mydata)
        }, errorResponse)
    }, errorResponse);
    return resultPromise.promise;
};
或者像这样被锁住:

exports.updateMyData = function (data) {
    return findById(data.id).then(function (mydata) {
        if (!mydata) {
            throw new Error("No item found to update");
        }
        return mydata.updateAttributes(data);
    });
};
请注意这两个选项如何返回内部承诺,而不是创建新承诺。另外,在
中抛出
。然后()
处理程序将自动拒绝该承诺


创建一个新的承诺,就像你原来的代码那样,当你可以返回你已经拥有的承诺时,这被认为是一个错误,应该避免。

可能重复的@ppshein-在哪一行代码上会发生此错误?调用导出函数时是否将
数据作为参数传递?抱歉,实际错误是
mydata未定义
。显示
返回mydata.updateAttributes(数据)时出错那一行。@ppshein-那是你的代码-我刚从你的问题中复制过来。你必须告诉我们什么是
mydata
。@ppshein-你是说它是
data.updateAttributes(mydata)
exports.updateMyData = function (data) {
    return findById(data.id).then(function (mydata) {
        if (!mydata) {
            throw new Error("No item found to update");
        }
        return mydata;
    }).then(function(data) {
        return mydata.updateAttributes(data);
    });
};