A JavaScript Promise is an object representing the eventual completion (or failure) of an asynchronous operation. Promises are widely used in modern web development to handle tasks such as data loading and event handling, especially when integrating custom code into Webflow projects.
let myPromise = new Promise(function(myResolve, myReject) { // Producing code (may take time) myResolve(); // if successful myReject(); // if there’s an error});myPromise.then( function(value) { /* code if successful */ }, function(error) { /* code if error */ });
myResolve(result)
on success or myReject(error)
on failure..then()
..then()
accepts two optional callbacks: one for success, one for errors.State | myPromise.state | myPromise.result |
---|---|---|
Pending | "pending" | undefined |
Fulfilled | "fulfilled" | result value |
Rejected | "rejected" | error object |
Note: State and result properties are internal; use methods like .then()
to handle outcomes.
Suppose a Webflow developer wants to load user data from an API and display it on a site once it’s available.
// Display functionfunction showUser(data) { document.getElementById("user-info").innerHTML = data;}// Promise to fetch user datalet userPromise = new Promise(function(resolve, reject) { fetch('https://api.example.com/user') .then(response => { if (response.ok) return response.json(); else reject('Error: ' + response.status); }) .then(data => resolve('Welcome, ' + data.name + '!')) .catch(error => reject(error));});// Consuming the PromiseuserPromise.then( function(value) { showUser(value); }, function(error) { showUser(error); });
<div id="user-info"></div>
to the Webflow page, and this code will display a welcome message after fetching user data. let myPromise = new Promise(function(resolve, reject) { setTimeout(function() { resolve("Action Complete!"); }, 2000); }); myPromise.then(function(value) { document.getElementById("demo").innerHTML = value; });
let filePromise = new Promise(function(resolve, reject) { let req = new XMLHttpRequest(); req.open('GET', "myfile.html"); req.onload = function() { if (req.status == 200) resolve(req.response); else reject("File not Found"); }; req.send(); }); filePromise.then( function(value) { /* handle file content */ }, function(error) { /* handle error */ } );