繁体   English   中英

.then()在内部承诺解决之前先解决自己

[英].then() resolves itself before internal promise resolves

我有一个诺言链,调用函数pngQuant

.then(response => {
    console.log(response);
    pngQuant.pngQuant(testObj['pngquant']);
}, err =>console.log(err))
//Then upload images
.then(response => {console.log(response)},err=>console.log(err));


function pngQuant(JSON){
    return new Promise((resolve,reject)=>{
        var execString = "find " + pathresolve('./src/resizer/tmp/') + " -name '*.png'"
        execString += " -exec " + pathresolve('./lib/pngquant') + " --force --ext=.png";

        exec(execString,(err,stdout,stderr)=>{
            if(err){
                console.log(err);
                reject(stderr);
            }

            else{
                console.log("resolved");
                resolve("Compression Complete");
            }

        })
    });
}

但是,链中的第二个“ then”会自行解决,控制台日志会“ undefined”,然后立即调用pnqQuant函数中的控制台日志,这意味着在调用pngQuant resolve函数之前先解决了then。

返回promise通过调用创建pngQuant从第一then

.then(response => {
    console.log(response);
    return pngQuant.pngQuant(testObj['pngquant']); // we returned the promise from pngQuant
}, err =>console.log(err))
// then upload images
.then(response => {
  console.log(response);
}, err => console.log(err));

检查的文档then在这里

return语句引起了问题。

.then(response => {
    console.log(response);
    pngQuant.pngQuant(testObj['pngquant']); 
}, err =>console.log(err))
// then upload images
.then(response => {
  console.log(response);
}, err => console.log(err));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM