我想这样做:
function save() {
//does some stuff here
somePromise.then(x => {
//do some stuff here
}).then(z => {
//return statement that makes you leave the function
})
}
我有一个函数,我希望有一个返回,它将在当时完成它的执行,因为我正在使用promises。
非常感谢任何帮助或建议。提前谢谢。
答案 0 :(得分:1)
使用return
function save() {
//does some stuff here
return somePromise.then(x => {
//do some stuff here
return /* value */
}).then(z => {
//return statement that makes you leave the function
return /* value */
})
}
答案 1 :(得分:0)
好的,被视为你的使用承诺。使用promises的最佳功能之一是async / await
,大多数现代浏览器现在都内置了这个功能,如果你需要定位旧浏览器,你可以使用像babel这样的东西。
好消息是你可以继续使用带有异步代码的Javascript,就好像它是同步一样,包括for循环/返回/中断......等等。
以下示例..
async function somePromise() {
console.log('Some promise called');
}
async function earlyReturnTest(doEarly) {
await somePromise();
if (doEarly) return;
console.log('Return not called');
}
async function run() {
console.log('Without return');
await earlyReturnTest(false);
console.log('');
console.log('With return');
await earlyReturnTest(true);
}
run();
答案 2 :(得分:-1)
问题是你在then()运行之前已经离开了save()函数。它没有等待它。一种解决方案可能是让您的保存将回调函数作为参数,以便您可以回调正在等待的代码。
function save(callBack) {
//does some stuff here
somePromise.then(x => {
//do some stuff here
}).then(z => {
//return statement that makes you leave the function
callBack();
})
}
// example of code calling the save
save(function() {
console.log("save is done running, do something here");
});
答案 3 :(得分:-1)
您可能需要让save
函数返回Promise
function save() {
//does some stuff here
return new Promise((resolve, reject) => {
somePromise.then(x => {
resolve("Something1")
}).then(z => {
//return statement that makes you leave the function
resolve("Something2")
})
}
}
save().then(x => {
console.log(x); // x = something1 || something2
})