这不是一个现实世界的问题,我只是想了解如何创造承诺.
我需要了解如何为一个不返回任何内容的函数做出承诺,比如setTimeout.
假设我有:
function async(callback){
setTimeout(function(){
callback();
}, 5000);
}
async(function(){
console.log('async called back');
});
Run Code Online (Sandbox Code Playgroud)
如何创建一个async可以在setTimeout准备好后返回的承诺callback()?
我想包装它会带我到某个地方:
function setTimeoutReturnPromise(){
function promise(){}
promise.prototype.then = function() {
console.log('timed out');
};
setTimeout(function(){
return ???
},2000);
return promise;
}
Run Code Online (Sandbox Code Playgroud)
但我想不到这一点.
我试图在javascript中包围promise对象.所以我在这里有一小段代码.我有一个promise对象和两个console.log()在promise对象的两边.我以为它会打印
你好
那里
zami
但它打印出来了
HI
zami
there
Run Code Online (Sandbox Code Playgroud)
为什么它就像那样.我对如何工作没有任何理解,但我理解异步回调在javascript中是如何工作的.任何人都可以对这个主题有所了解吗?
console.log('hi');
var myPromise = new Promise(function (resolve, reject) {
if (true) {
resolve('There!');
} else {
reject('Aww, didn\'t work.');
}
});
myPromise.then(function (result) {
// Resolve callback.
console.log(result);
}, function (result) {
// Reject callback.
console.error(result);
});
console.log('zami');
Run Code Online (Sandbox Code Playgroud)