Я хочу выполнить 2 функции в том, что я импортировал из 2 других .js-файлов, которые я создал. Функция, которая должна быть выполнена, сначала занимает немного времени, а вторая начинается до того, как первый закончен, и мне нужны файлы, которые были созданы для работы. Вот в основном то, что мои .js выглядит следующим образом:Выполнение импортированных функций Javascript в порядке
var pdfToPng = require("./pdfToPng.js");
var doStuffToPng = require("./doStufftoPng.js");
var pdfFilePath = process.argv[2];
var pngFilePath = pdftoPng.convert(PdfFilePath);//convert takes a path
//and makes a png and returns path
//to the png
doStuffToPng.doStuff(pngFilePath);
//I want "doStuff()" to start AFTER "convert()" is done.
Im уверен, что это что-то делать с обратными вызовами, но я Javascript нуб и нуждаются в помощи. Я могу заставить его работать с setTimeout(), но для меня это похоже на «исправление скотча». Какой-то более элегантный?
Edit: некоторые замечательные люди хотели помочь и попросили опубликовать это, pdfToPng.js:
var spindrift= require('spindrift');//this is a node module
var fs = require('fs');
//Makes a png from pdf in pngFolder and returns the path to that png
exports.convert = function(path)
{
var pdf = spindrift(path);
var pathToPng = path.substring(0, path.length-4); //takes off the .pdf
pathToPng += "_out.png";
//this is spindrift's stuff, makes a png in dir pngFolder/pathToPng
pdf.pngStream(500).pipe(fs.createWriteStream("pngFolder/" + pathToPng));
return "pngFolder/" + pathToPng;
}
Это общее заблуждение асинхронной. Вы не можете этого сделать. Ну, ты можешь, но не так. Если вы хотите, чтобы одна вещь произошла после другой вещи, вам придется использовать вложенные обратные вызовы или обещания. – elclanrs
Вам нужно переписать метод 'pdftoPng.convert' для поддержки обратных вызовов/обещаний. Можете ли вы отправить код? – jasonscript
K Я добавил pdfToPng.js –