node-example async await
The snippet can be accessed without any authentication.
Authored by
Brigitte Jellinek
Edited
await.mjs 1.67 KiB
/* ignore the first 50 lines */
import {execSync} from 'child_process';
const ImageModule = {
resize: function(data) {
execSync('sleep 1');
return "resized data";
}
}
const File = {
getFile: function(src) {
return new Promise((resolve, reject) => {
setTimeout(function(){
resolve("image data");
}, 0);
});
},
saveFile: function(data, dst) {
return new Promise((resolve, reject) => {
setTimeout(function(){
resolve(true);
}, 0);
});
}
}
const TwitterAPI = {
getProfile: function(username) {
return new Promise((resolve, reject) => {
setTimeout(function(){
resolve({username: 'bjelline', followers: [1,2,3]});
}, 0);
});
},
};
const Model = {
setFollowers: function(username, followers) {
return new Promise((resolve, reject) => {
setTimeout(function(){
resolve(true);
}, 0);
});
},
};
/* */
/* example code starts here */
/* */
async function fetchTwitterFollowers(username) {
const profile = await TwitterAPI.getProfile(username);
await Model.setFollowers(profile.username, profile.followers);
return profile.followers.length;
}
async function createThumbnail(src, dest) {
const fileData = await File.getFile(src);
const newImage = ImageModule.resize(fileData);
await File.saveFile(newImage, dest);
return true;
}
const [number, success] = await Promise.all([
fetchTwitterFollowers('fhsalzburg'),
createThumbnail('/tmp/files/fhsalzburg.png', '/data/fhsalzburg.png')
]);
console.log("number of followers", number);
console.log("and thumbnail created? " + (success ? "yes" : "no"));
Please register or sign in to comment