I really have hard time understanding asynchronous code, and callback function.
I want to make a sequence of function that depend on the result of the last one. The first function will import data from a data base.
import value > fctOne(Value) > fctTwo(value of fctOne(Value)) > fctThree(value of fctTwo(value)) > and so on ...
App.js will need to wait for value to be imported, so fctOne can't be synchronous. But then will all my functions behind it will need to be asynchronous too ? They have to run in order.
My failing code :
DB.JSON
{"val":5,"square":25,"SquareRoot":5,"dividedByHimself":1}
on app.js
const db = require('./DB.json')
const fs = require('fs')
const path = require('path')
const dbPath = path.join(__dirname,'DB.json')
let data = fs.readFileSync(dbPath)
let userDBupdate = JSON.parse(data)
///function to import data with simulation of the delay to obtain imported value//
const value = (pathDB,callBack) => {
setTimeout((err) => {
if(err){
return callBack(new Error("loading failed"))
}
const val = db[pathDB]
callBack(val)
}, 500)
}
//// square function
let square = (pathDB, callBack) => {
value(pathDB, (val) => {
let result = val * val
userDBupdate.square = result
callBack(result)
let dataMAJ = JSON.stringify(userDBupdate)
fs.writeFileSync(dbPath, dataMAJ)
})
}
square('val')
let squareRootOfSquare = (pathDB, callBack) => {
square(pathDB, (val) => {
let result = Math.sqrt(val)
userDBupdate.square = result
callBack(result)
let dataMAJ = JSON.stringify(userDBupdate)
fs.writeFileSync(dbPath, dataMAJ)
})
}
squareRootOfSquare('val')
Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW
Comments
Post a Comment