我期待創建尚未解決的承諾。 我會創造這個承諾,並有一些進程在等待它來解決。只有當我實際上分配了另一個我正在打的電話的承諾時,它纔會得到解決。但起初,我的所有流程都會一直等待這個承諾,直到我重新分配它爲止。我如何用ES6 Promise做到這一點。創建尚未解決的承諾es6
我知道我可以創建一個已經解決了承諾:
Promise.resolve('')
因此,這將那種相反。
我期待創建尚未解決的承諾。 我會創造這個承諾,並有一些進程在等待它來解決。只有當我實際上分配了另一個我正在打的電話的承諾時,它纔會得到解決。但起初,我的所有流程都會一直等待這個承諾,直到我重新分配它爲止。我如何用ES6 Promise做到這一點。創建尚未解決的承諾es6
我知道我可以創建一個已經解決了承諾:
Promise.resolve('')
因此,這將那種相反。
您可以創建這樣那樣的承諾:
new Promise(function(resolve, reject) {
resolve('some value');
// or
reject('some value');
});
的resolve
和reject
參數的函數本身是能夠使用的功能分別解決或拒絕承諾。他們都接受一個價值,這將是承諾的解決價值。
查看MDN Promise瞭解更多信息。
你可以這樣說:
const promise = new Promise((resolve, reject) => {
// If you want to resolve:
resolve(optionalParam);
// If you want to reject:
reject(optionalParam);
});
您可以創建引用resolve
,Promise
構造
// assign `resolve`, `reject` functions of `promise` within `Promise` constructor
let _resolve = _reject = void 0;
let promise = new Promise(function(resolve, reject) {
_resolve = resolve; // define `resolve` as `_resolve` to outer scope
_reject = reject; // define `reject` as `_reject` at outer scope
});
promise
// do stuff when `promise` resolves or rejects
.then(function handleFulfilled(data) {
console.log(data)
}, function handleErr(err) {
console.log(err)
});
function fn(t, res, err, value) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve()
}, Math.floor(Math.random() * t))
})
.then(function() {
return res(value)
})
}
fn(3000, _resolve, null, "abc")
// do stuff after `promise` resolved or rejected
.then(function() {
console.log("promise resolved")
}, function(err) {
console.log("promise rejected", err)
});
['新承諾的
reject
(/ * *執行/功能(解析,拒絕){...}); '](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) – str