In a significant intervention, the shadow chancellor also said Labour would call on the government to "join us" in a public vote if Labour cannot secure a general election - the party's preferred option.
Labour's official position is to keep all options on the table, including the prospect of a second referendum, but Jeremy Corbyn has made it clear he disapproves of a new public vote.
Mr McDonnell told the BBC: "We want a deal that will protect jobs and the economy. If we can't achieve that - the government can't achieve that - we should have a general election but that's very difficult to do because of the nature of the legislation that David Cameron brought forward.
"If that's not possible, we'll be calling upon the government then to join us in a public vote.
"It's difficult to judge each stage, but that's the sequence I think that we'll inevitably go through over this period."
Asked if it was "inevitable" that there would be another vote, he said: "That's right. Our policy is if we can't get a general election, then the other option which we've kept on the table is a people's vote."
Labour MP Stephen Doughty said his comments were “very welcome", adding: "It would be good to see this repeated and reinforced as it becomes clearer by the hour that we need a way through this Brexit chaos.
"It's clear that it is the will of Labour members and voters across the country.”
The Independent has launched a campaign for a Final Say referendum on Ms May’s Brexit deal, which has attracted more than a million supporters so far.
In a separate interview, Mr McDonnell also said for the first time that staying in the bloc should be one of the alternatives offered to the public in the event of a public vote.
He came under fire at the party's annual conference when he said Labour would “go for a people's vote” if MPs rejected Theresa May's deal but without the option to halt Brexit altogether.
Pro-EU MPs were dismayed by his comments, with one MP telling The Independent that denying voters the choice to remain in the EU as "farcical".
Mr McDonnell told a Guardian event: "If we can’t get a general election, people’s vote is on the table and that might be an option we seize upon."
The Labour frontbencher said he would vote to remain in a fresh poll and dismissed the idea of presenting the public with the option to crash out of the EU without a deal.
“We can’t have no deal on the ballot paper,” Mr McDonnell said.
“There’s an overwhelming majority in parliament against that happening, because of the damage.”
He said MPs were likely to vote down the prime minister's deal, forcing Ms May to return with a tweaked blueprint that would be rejected as well.
Mr McDonnell said: “All through that, we will be calling for a general election.
“Whether and when we put a vote of no confidence down will be a tactical decision. We’ll want a maximum effect.”
He said that Labour had been meeting with the SNP, the Lib Dems and Green MP Caroline Lucas to discuss.
It emerged at the weekend that Mr McDonnell had met with former Labour spin doctors Alastair Campbell and Tom Baldwin, who are senior figures from the People’s Vote campaign for a fresh referendum.
However sources close to Mr McDonnell advised that Labour’s policy had not changed and that he was still pushing for a general election.
Meanwhile, Mr Corbyn’s spokesman told reporters that Labour would oppose the Brexit deal on offer, adding: “If that deal falls our position is that a general election would be the best outcome.
“If we are unable to get a general election all options would be on the table, including the option of supporting a public vote.”
Register for free to continue reading
Registration is a free and easy way to support our truly independent journalism
By registering, you will also enjoy limited access to Premium articles, exclusive newsletters, commenting, and virtual events with our leading journalists
Already have an account? sign in
Join our new commenting forum
Join thought-provoking conversations, follow other Independent readers and see their replies