下面是我的函数,我正在使用“ setTimeout(function()”)延迟,如何等待上面的函数完成然后执行其他函数。
function first_letter() {
var myArray = ["A", "D", "E", "F", "G", "H", "K", "M", "N", "O", "P", "R", "S", "T"];
var letter = myArray[Math.floor(Math.random() * myArray.length)];
bg_width = xx;
bg_height = xx;
load(xx, xx)
loading()
make(xxxxxxx)
setTimeout(function() {
fillText(xxxxxx)
}, 1500);
setTimeout(function() {
rounded(xxx)
}, 2000);
}
类似于给定的代码。等待加载(xx,xx)完成,然后执行make(xxxx)。
答案 0 :(得分:0)
您可以使用Promise对象。它表示异步操作的最终完成及其结果值。
let cell = sampleTableView.cellForRow(at: indexPath) as! sampleCellView
答案 1 :(得分:0)
尽管有很多功能超出了范围,但是很难看到代码示例中发生了什么,尽管有很多方法可以实现。但是,我为您提供了一些示例,在这些示例中,我假设了这些功能的内容。
您可以尝试:
回调示例
通过将make()
传递为load()
,从make()
内部调用callback function
。
function load(xx, xx, callback){
/* load does its thing */
//callback is invoked - (passed in via args, make)
callback(xx)
}
function make(arg, callback){
//make funciton
}
//invoke it!
load('a', 'b', make);
承诺示例
load
作为JavaScript Promise
var load = new Promise((resolve, reject) => {
// do whatever you require in here.
// when you are happy to fulfil, call resolve.
// if error, reject!
resolve(x); //or
reject(x);
})
// make function
function make(arg){
// do something
}
// use it!
load.then((x) => { make(x)}).catch((x) => {console.log(x)})
异步等待承诺
在此示例中,异步函数内的关键字await使javascript等待,直到诺言得以兑现,并向我们返回用于调用make()
函数的结果。
async function load(){
// contents of the load funciton.
// call the make function when you have the outcome
// you expected. for example if you are getting data.
let getData = new Promise((resolve, reject) => {resolve('xx')})
let xx = await getData // wait till the getData promise is resolved.
make(xx);
}