2016-06-16 12 views
0

なぜ、then()はconsole.logと呼ばれているのですか( 'これは書き込み前に来るものです');文章を書く前に来て、PDFに抽出するのですか?私は約束を新しくしているので、これで少し混乱しています。私は、文と構文解析が起こったあと、then()文が起こるようにしたい。「then()」の順番ではないと約束しますか? (nodejs)

function writeToPDF(data, fileName) { 
    return new Promise((resolve, reject) => { 
    data.pipe(fs.createWriteStream(fileName), err => { 
     reject(); 
    }); 
    data.on('end',() => { 
     resolve(); 
    }) 
    }); 
} 
​ 
function extractPDF(pdf) { 
    return new Promise((resolve, reject) => { 
    extract(pdf, {splitPages: false}, (err, text) => { 
     if (err) { 
     console.log(err); 
     } else { 
     resolve(text); 
     } 
    }); 
    }); 
} 
​ 
request(link).then((success, failure) => { 
    let fileName = './name-' + Date.now() + '.pdf'; 
    writeToPDF(data, fileName).then(() => { 
    extractPDF(fileName).then((text) => { 
     arrayOfDocuments.push(text); 
    }) 
    },() => { 
    //handle error 
    }); 
}).then(() => { 
    console.log('THIS COMES BEFORE THE WRITING AND EXTRACTING'); 
}); 

答えて

0

あなたのthen値を入れ子にし、実際には二つの異なるthenのルートを持っている - より良い用語の欠如のために。

JavaScriptの問題では、メソッドで最初のthenが解決されると、次のthenに移動することができます。ここで、writeToPdfが解決されると、そのレベルの前回の約束が解決されたため、約束チェーンのその部分がconsole.logステートメントに移動します。意味がある?

+0

は、どのように私はそれが私はそれからやりたいのですか?私はwriteToPDFとextractPDFの後にconsole.log()ステートメントに行きます。 – user3835653

+0

writeToPdf(データ、ファイル名).then(extractPdf).then(// console.logの場合はfn) – Pytth

+0

リクエストの配列はどうなりますか?たとえば、私は2つの要求の配列を持っており、そのうちの1つは通常のtxtファイルなので、解析しません。私は両方が完了した後にconsole.log()文を実行したい。これはどうすればいいですか? – user3835653

0

ブロックは、外側の約束と2レベルの約束の連鎖とを含む。

ますので{block}returns are not explicit、と脂肪の矢印の機能を記述する場合:

  • writeToPDF()またはextractPDF()由来約束のどちらが返され、
  • 外約束チェーンは知らされていません
  • console.log('THIS COMES BEFORE ...')は、約束の履行にのみ依拠して、request(link)で返され、PDFの処理が開始された後、完了する前に行われることが保証されています。
request(link).then((success, failure) => { 
    let fileName = './name-' + Date.now() + '.pdf'; 
    return writeToPDF(data, fileName).then(() => { 
//^^^^^^ 
    return extractPDF(fileName).then((text) => { 
// ^^^^^^ 
     arrayOfDocuments.push(text); 
    }) 
    },() => { 
    //handle error 
    }); 
}).then(() => { 
    console.log('THIS COMES BEFORE THE WRITING AND EXTRACTING'); 
}); 
関連する問題